在php中运行计划的任务

时间:2019-07-13 00:58:35

标签: php cron

我有一个表格,其中包含运行广告系列的所有信息。该信息包括检查活动的时间间隔(10分钟,15分钟等)以及检查活动是否满足特定要求的其他信息。

目前,我打算做的是:

  • 将我的代码添加到一个php文件中
  • 在代码中,遍历表的所有行
  • 检查是否需要检查广告系列(通过间隔)
  • 如果是时候检查广告系列,请仔细阅读表格的其他详细信息,并根据设置的条件发送电子邮件或SMS。
  • 我计划每10分钟运行一次通过该php文件的cron作业(因为这是最短的检查间隔)

我需要一些建议,无论是正确的解决方案,还是有人有更好更好的解决方案?

1 个答案:

答案 0 :(得分:1)

这是一个不错的起点...

  

如果是时候检查广告系列了...

请记住,有时一个cron进程所花费的时间比预期的时间长,卡住或系统崩溃。理想情况下,您的流程应跟踪a。)正在执行的操作,以及b。)执行的时间。并能够解决跳过或卡死的问题。

您可能永远都不想发送这么晚的消息。然后,您可能想要确保所有错过的消息都已发送。您的代码应该能够在某种程度上自动处理这种情况。也许自动执行了过去一个小时应该做的任何事情,但是没有做,并且忽略了任何比这更旧的事情。对于较旧的内容,您必须手动运行脚本。确保脚本具有命令行参数,这些参数可以简化您,使其强制在先前的时间间隔和特定的广告系列ID下运行。灾难过后,这将使您的生活更加轻松。

我建议您进行某种形式的报告,以便您可以实时跟踪处理情况。如果您要将状态信息写入数据库,则非常简单。再加上处理时间戳记的结束,您甚至可以查看您的cron作业运行了多长时间。如果您不想在cron作业中使用此状态信息,则可以将其写入日志文件而不是数据库中。在这种情况下(如果需要),您将使用锁定文件来指示cron作业何时运行,并防止其他cron作业同时启动。无论如何,最好写一个日志文件,以便您记录发生的情况。想象一下,如果您的cron作业发送了电子邮件但在尝试将状态写入数据库时​​崩溃了。您至少会有一条日志行可以帮助您以后进行调查。

  

我正计划运行一个通过此php文件的cron作业,   每10分钟一次(因为这是最短的检查间隔)

因此,脚本的速度将随数据量,外部服务的延迟而变化(假设脚本直接与此类服务对话)。我将从更长的cron作业开始间隔开始-假设您的客户/用例允许这样做。如果您按照上述建议让脚本自动处理跳过的时间,那么这不是问题。您处理的内容越多,脚本最终需要的时间就越多。因此,在第1天,可能只需要1秒。但是在第300天可能需要15分钟? (到那时,您可以决定要同时运行多个进程/线程,每个进程/线程都集中在一个或多个广告系列上。谁知道...)但是您会知道,因为您拥有报告/提醒/记录开始/结束处理时间。