1

您是否知道可以通过 PHP 中的 API 启动、停止、暂停、恢复、重新安排的 crontab 替代方案?

或者这在 crontab 中可能吗?

我有一个由 cron 执行的长时间运行的 php 脚本。我将不得不暂停 cron(当脚本正在执行时)或重新安排,以便它在它仍在执行时不会重新运行我的 php 脚本。脚本运行后,我将再次启动 cron。

4

3 回答 3

4

您可能希望将锁定逻辑添加到您的PHP 脚本中。例如,脚本可能会检查是否存在锁定文件,如果存在则中止。否则它将创建该文件并在完成后将其删除。您可以在脚本中添加其他逻辑,例如检查上次运行的时间,如果上次运行时间少于 1 小时,则中止。

至于 cron 作业,您可以根据脚本负责检查锁、上次运行时间等的假设来设置激进的时间安排(比如每 5 分钟一次)。

于 2011-07-04T08:53:29.003 回答
2

您可以使用 The Fat Controller,它是一个用 C 编写的守护进程,基本上可以运行任何东西,然后重复它。它抽象了所有流程逻辑,因此您可以将业务逻辑保留在 PHP 脚本中。它是完全可配置的,包括设置一个实例结束和下一个开始之间的间隔、发生错误时更长的间隔、日志记录,以及并行运行多个脚本实例的能力。

恐怕这个网站还是有点基础,但有很多信息,如果您需要任何帮助或有任何问题,请给我发消息 - 我很乐意提供帮助!

http://www.4pmp.com/fatcontroller/

于 2011-07-04T11:46:20.390 回答
1

您应该尝试使用作业队列。

有一些是用纯 PHP 实现的(比如Zend Job Queue)或者安装一个像 beanstalkd 这样的守护程序服务(使用像Pheanstalk这样的 PHP-API 。)

于 2011-07-04T08:45:17.490 回答