我的代码需要分5个部分运行,每个部分相隔10分钟。我知道我可以运行5个不同的cron作业,但该脚本适合作为一个脚本,在不同的点上有10分钟的睡眠()。
所以我有:
set_time_limit(3600);
//code
sleep(600);
//continutes
sleep(600);
//etc
这样做效率非常低,还是应该找到一种方法让它分成5个不同的cron作业,分开10分钟?
答案 0 :(得分:0)
sleep()不消耗CPU时间,但正在进行的进程将消耗RAM,因为php引擎需要继续运行。如果你有大量的免费RAM,这应该不是问题,但我仍然建议将它分成其他的crons。
就我个人而言,我曾经在以前使用PHP编写过的网页抓取工具中长时间睡眠(10-20分钟),并且从我当地的4 GB RAM计算机上运行没有任何问题。
答案 1 :(得分:0)
取决于您的任务,但一般来说 - it is bad
因为它长时间消耗不需要的资源而且被中断的风险很高(通过系统崩溃/重启或外部更改资源的脚本操作)。
我建议使用像RabbitMQ这样的作业队列守护进程来延迟功能。因此,在每个区块之后,您可以在10分钟内将下一个区分入队列。这将节省资源并提高稳定性