【问题标题】:Is PHP long sleep() inefficient?PHP long sleep() 效率低吗?
【发布时间】:2014-10-25 20:10:54
【问题描述】:

我的代码需要分 5 部分运行,每部分相隔 10 分钟。我知道我可以运行 5 个不同的 cron 作业,但该脚本适合作为一个脚本,在不同的时间点有 10 分钟的 sleep()s。

所以我有:

set_time_limit(3600);

//code

sleep(600);

//continutes

sleep(600);

//etc

这样做效率非常低,还是我应该找到一种方法将其拆分为 5 个不同的 cron 作业,间隔 10 分钟运行?

【问题讨论】:

    标签: php cron


    【解决方案1】:

    sleep() 不会消耗 CPU 时间,但正在进行的进程会消耗 RAM,因为 php 引擎需要继续运行。如果您有大量可用 RAM,这应该不是问题,但我仍然建议将其拆分为其他 cron。

    就我个人而言,我在以前用 PHP 编写的网络爬虫中使用过长时间睡眠(10-20 分钟),这些爬虫从我的本地 4 GB RAM 机器运行没有问题。

    【讨论】:

      【解决方案2】:

      取决于您的任务,但一般来说 - it is bad 因为它会长时间消耗不需要的资源并且有很高的被中断风险(由于系统崩溃/重启或脚本操作的资源的外部更改) .

      我建议使用具有延迟功能的作业队列守护程序,例如 RabbitMQ。因此,在每个块之后,您可以在 10 分钟内将下一个块排入队列。这将节省资源并提高稳定性

      【讨论】:

        猜你喜欢
        • 2015-08-16
        • 1970-01-01
        • 2011-05-03
        • 2013-07-15
        • 1970-01-01
        • 2020-12-04
        • 1970-01-01
        • 2015-04-25
        • 2011-01-01
        相关资源
        最近更新 更多