使用PHP限制cron作业

时间:2011-01-17 11:46:51

标签: php cron web-hosting

我有一个带有PHP的Cron作业我想在我的webhost上设置,但目前脚本需要大约20秒才能运行,只有3个用户数据被刷新。如果我有1000个用户 - 要花很长时间。 Cron Job有替代品吗?我的网络主机是否允许我运行一个cron作业,例如需要10分钟才能运行?

2 个答案:

答案 0 :(得分:1)

cron工作不应该影响完成“工作”需要多长时间。如果你的工作需要20秒才能完成,那就是PHP的错,而不是cronjob。

  

我的网络主机是否允许我运行一个cron作业,例如需要10分钟才能运行?

询问您的虚拟主机。

如果您想了解优化PHP脚本,请查看Profiling PHP Code

答案 1 :(得分:1)

你的cron工作可以随心所欲。

您遇到的主要问题是,必须确保在第一个cron作业仍未运行时未执行下一个cron作业。你有很多解决方案可以避免它,基本上使用信号量。

它可以是锁文件,也可以是数据库中的记录。你的cron作业应该检查前一个是否完成。一件好事可能是发送电子邮件,如果他因为很久以前的工作而无法运行(这样你会有一些通知警告你可能出错了)默认情况下,退出的错误dstatus的cron作业输出全部标准输出到运行作业的帐户的电子邮件,具体取决于您可以使用此行为的平台配置方式或在作业上构建smtp连接(或将警报存储在数据库表中)。

如果你想要一些cron工作的替代方案,你应该看看工作队列。您可以将工作队列与cron作业混合,或者在apache-php环境中使用工作队列,很多解决方案,但主要思想是在单个队列中完成应该完成的事情,并逐个执行它们(但是要小心,如果你非常缓慢地处理这些任务,你会得到一个很大的等待队列。