【问题标题】:Scheduling PHP script调度 PHP 脚本
【发布时间】:2012-02-09 04:24:07
【问题描述】:

我有一个需要经常运行的 php 脚本,即大约每 10 秒运行一次。鉴于所需的频率,cron 似乎不适合。

理想情况下,我想运行我的脚本; a)在每次执行之间有短暂暂停(例如)5秒的循环中,或 b) 安排脚本每 10 秒运行一次

php、mysql、linux

非常感谢任何建议。

【问题讨论】:

标签: php linux scheduled-tasks


【解决方案1】:

设置每分钟定时任务来运行您的 PHP 脚本。

在您的 PHP 脚本中,循环运行代码 6 次。

您可以使用sleep 函数在每个循环执行之间创建一个暂停:http://php.net/sleep

【讨论】:

    【解决方案2】:

    您可以将 cron 设置为每分钟运行一次以初始化脚本,然后创建一个循环来检查日期(“s”);如果它低于 51,则重复循环,否则退出循环,这样就不会生成无限循环。尽管您需要记住,这是非常低效的,因为它会使 php 不停地运行,并且可能使您的服务器对正常方式没有响应。还有其他更高效的调度程序可以在更短的时间跨度上运行。我所做的一件事是创建一个在盒子上运行的 c/c++ 守护程序,并且每 10 秒点击一次 php 应用程序。虽然这样效率更高并且允许 php 脚本退出,但您必须添加错误检查以确保您的服务器以 10 秒的间隔响应或实际得到 ping,例如,如果它在 apache 下运行,可能会在非常繁忙的服务器。

    【讨论】:

      【解决方案3】:

      使用在无限循环中运行的 shell 脚本。该脚本应该触发您的 PHP 脚本,该脚本执行一次(并且仅一次)然后退出。

      您可以使用 sleep 命令在运行之间设置延迟。

      这样做是为了让 PHP 在每次运行后退出,以便 PHP 可以释放内存和 CPU 时间。

      【讨论】:

        【解决方案4】:

        在 cron 中,您可以将脚本设置为每 10 秒执行一次。恐怕在这种情况下您的脚本需要多长时间才能执行。

        另一种选择是您可以在程序中创建一个无限循环,然后要完成的任务将在循环块内。执行一次循环后,使用 sleep 或 usleep 延迟 10 秒。在这里,您对程序没有太多控制权。如果要停止程序,需要使用linux kill 命令来终止任务。

        【讨论】:

        • 不,在 cron 中,您不能将脚本设置为每 10 秒执行一次。 AFAIK,最小间隔是 1 分钟。
        • 如果是这样,您需要连续运行脚本并在每次迭代之间设置睡眠。有延迟的无限循环会有所帮助。
        猜你喜欢
        • 2012-07-26
        • 2011-07-28
        • 2014-08-04
        • 2015-05-06
        • 2015-05-26
        • 1970-01-01
        • 2011-11-30
        • 2013-09-26
        • 1970-01-01
        相关资源
        最近更新 更多