我在服务器中有一个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 的输出,以查找执行时间以外的可能问题,例如内存泄漏。