PHP脚本的Cron作业,需要非常长的执行时间

前端之家收集整理的这篇文章主要介绍了PHP脚本的Cron作业,需要非常长的执行时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个PHP脚本作为cron作业运行,它执行一组简单的任务,为数据库中的每个用户循环,大约需要30分钟才能完成.这个过程每小时开始一次,需要尽可能快速有效.我遇到的问题,就像任何服务器脚本一样,执行时间各不相同,我需要找出最佳的cron时间设置.

如果我每分钟运行一次cron,我需要在分钟结束前20秒停止脚本的最后一个循环,以确保当前循环及时完成.在一个小时的过程中,这会浪费很多时间.

我想知道简单地删除PHP执行时间限制并且每小时运行一次脚本并让它运行完成是一个坏主意….这是一个坏主意吗?

假设您希望尽快完成工作,请不要使用cron. Cron适用于需要在特定时间发生的事情.它经常被滥用来模拟后台流程,这个流程一旦工作出现就会理想地处理工作.你应该写一个持续运行的守护进程. (注意:您还可以查看消息/工作队列类型系统,还有很好的库可以执行此操作)

您可以使用pcntl functions从头开始编写一个守护进程(因为您不关心多个工作进程,在后台运行进程是super-easy.),或作弊并创建一个永远运行的脚本并通过screen运行它,或利用一些像PEAR的System:Daemonnanoserv这样的实体库代码

一旦守护进程得到处理,你真正关心的就是拥有一个永远运行的循环.您需要注意您的脚本不会泄漏内存或消耗太多资源.

通常,您可以执行以下操作:

<?PHP
// some setup code 
while(true){
    $todo = figureOutIfIHaveWorkToDo();
    foreach($todo as $something){
        //do stuff with $something
        //remember to clean up resources so you don't leak memory!
        usleep(/*some integer*/);
    }
    usleep(/* some other integer */); 
}

它会很好地工作.

原文链接:https://www.f2er.com/php/137893.html

猜你在找的PHP相关文章