PHP长睡眠()效率低吗?

时间:2014-10-25 20:10:54

标签: php cron

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

所以我有:

set_time_limit(3600);

//code

sleep(600);

//continutes

sleep(600);

//etc

这样做效率非常低,还是应该找到一种方法让它分成5个不同的cron作业,分开10分钟?

2 个答案:

答案 0 :(得分:0)

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

就我个人而言,我曾经在以前使用PHP编写过的网页抓取工具中长时间睡眠(10-20分钟),并且从我当地的4 GB RAM计算机上运行没有任何问题。

答案 1 :(得分:0)

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

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