Php 在特定事件24小时前安排电子邮件通知?

Php 在特定事件24小时前安排电子邮件通知?,php,mysql,linux,cron,Php,Mysql,Linux,Cron,我有一个基于PHP的网站,其预订/约会存储在MySQL数据库中 我想设置一个电子邮件通知,发送给每个在预订前24小时预订的人。通过常规PHP表单添加预订 我知道我可以在索引页面中添加一个脚本,用于检查数据库中最后24小时内的任何预订,但这是不可靠的,因为一开始我不会获得太多流量。因此,索引页面可以在几个小时内不进行访问,而通知将延迟几个小时 想到的另一个解决方案是设置一个每分钟运行一次的cron作业,调用一个PHP脚本,该脚本检查是否应该发送并发送电子邮件。但我不确定这是否在某种程度上是过分的;

我有一个基于PHP的网站,其预订/约会存储在MySQL数据库中

我想设置一个电子邮件通知,发送给每个在预订前24小时预订的人。通过常规PHP表单添加预订

我知道我可以在索引页面中添加一个脚本,用于检查数据库中最后24小时内的任何预订,但这是不可靠的,因为一开始我不会获得太多流量。因此,索引页面可以在几个小时内不进行访问,而通知将延迟几个小时

想到的另一个解决方案是设置一个每分钟运行一次的cron作业,调用一个PHP脚本,该脚本检查是否应该发送并发送电子邮件。但我不确定这是否在某种程度上是过分的;有没有人比在后台每分钟运行一次更好的解决方案


总而言之,没有cron有没有办法做到这一点?

您不需要将cron用作间隔计时器。你可以设定一个非常具体的日期和时间来完成你的工作

例如:

0 0 18 5 * <php command here>
0 0 18 5*

将于每年5月18日午夜运行。在下一次迭代(明年)之前,这已经足够清除它了。

除了设置cron或通过定期调用向服务器发送请求之外,没有其他方法了……下面是与您的问题类似的帖子,您可能会有所了解


谢谢

一个cron作业每分钟都没有意义!但是你可以每小时做一个cron作业,因为我认为它不会测量一个小时或两个小时的差异。没有cron,就没有别的办法了。完成作业需要大约2秒钟(最多2秒钟),因此值得从网页触发作业是一个非常糟糕的主意,原因有两个:(1)如果你的网站没有流量,作业就不会运行;(2) 如果收到大量通知,作业将减慢对web请求的响应(假设同步调用作业)

我也会极力劝阻你不要每分钟都做一份工作——这肯定是一种过火的行为。相反,想想你是否真的需要“正好24小时”作为间隔时间,还是“22到26小时”就可以了

我们也有类似的要求,我们设置了一个每4小时运行一次的作业,并检查从脚本运行开始的22到26小时之间的事件需要发送哪些通知。这样,脚本一天只执行6次,所有内容都能正确发送

如果4小时的近似值不够好,那么考虑合适的最大间隔。我相信一个小时就足够了。让脚本每小时运行一次(从cron开始),并检查从运行时起23到24小时之间开始的事件


请记住,一旦您的电子邮件被发送,它不会立即进入收件人的收件箱:有时需要几秒钟,但有时可能需要一个小时甚至更长时间,因此脚本中额外的一小时差异不会成为问题。

我敢肯定,您可以使用cron设置执行脚本的非常具体的时间和日期。为什么不使用它呢?因为用户通过PHP创建了一个预订,我怎么能从那里动态添加一个cron作业呢?很抱歉,但是如何为每个预订手动添加一个cron作业呢?一个用户是如何改进我的想法的?@robert:我在附件中提到,你可以从PHP修改cron作业。是的,我也这么认为,但不管出于什么原因,客户都要求精确。我想答案是让他相信不是这样:)@robert试着向客户解释电子邮件不是一种时间可靠的沟通方式。如果您现在发送电子邮件,那么收件人可能要过几个小时才能收到。