Cron 在执行一段时间后停止


Cron stops after some time of execution

我在服务器中有一个cron,它设置为2 6 *** wget http://test.com/test.php

在此文件中,它获取 10000 条记录并进行操作。当我执行此文件时,它在执行一段时间后停止(可能是,它达到了最大执行时间。没有应用程序错误,因为它适用于少量记录)。

我有一个解决方案,例如,先获取 100 条记录然后处理,关闭 mysql 连接,然后休眠 2 分钟,然后获取接下来的 100 条记录。

它会解决执行时间问题还是两者在效果上相同?

如果休眠两分钟,脚本将在第一个睡眠周期内达到默认的最大执行时间 30 秒。

您可以通过以下方式增加该限制

ini_set("max_execution_time", 300); //for 5 minutes

然而,这只是一个症状性的修复,而不是一个真正的解决方案,或者改变你的算法,以便你的记录被分块成几组,然后可以由几个 cronjob 一个接一个地运行或由几个 cronjobs 并行处理同时,php pthreads 或 forking - 如果这两个选项可用于您的服务器配置。

但是,您绝对应该手动检查 cronjob 的输出,以查找执行时间以外的可能问题,例如内存泄漏。