首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >长时间的cron作业通过wget/curl?

长时间的cron作业通过wget/curl?
EN

Stack Overflow用户
提问于 2009-05-10 06:36:46
回答 4查看 6.9K关注 0票数 3

我正在为我的php应用程序处理cron作业,并计划通过wget/curl使用cron。我的一些php cron作业可能需要2-3个小时。如何让php在cron标签上工作2-3个小时?通过cron wget/curl运行这么长时间的作业是不是很好的做法?有人有这方面的经验吗?我也有电子邮件队列,我需要每10秒运行一次,但cron选项卡是分钟级别的。对这个案子有什么建议吗?

感谢您的阅读。

EN

回答 4

Stack Overflow用户

发布于 2009-05-10 06:44:55

当您使用wget/curl时,您正在请求来自wget服务器的页面。每个will服务器都会有一个超时时间,因此这可能会超时。

此外,一些宿主提供商可能会停止进程运行超过特定的分钟(基本上是为了控制流氓线程)。

因此,如果作业耗时超过几分钟,则不建议使用wget/curl进行调度。

尝试使用实际调度程序对其进行调度。您可以从命令行运行php

php选项--

php命令应该在路径上。

票数 4
EN

Stack Overflow用户

发布于 2009-05-10 09:35:57

您可以在脚本的开头使用以下命令来告诉PHP永远不要超时:

代码语言:javascript
运行
复制
set_time_limit(0);

更明智的做法是,如果crontab每24小时运行一次脚本,请将超时设置为24小时,这样您就不会同时运行两个副本。

代码语言:javascript
运行
复制
set_time_limit(24*60*60);

Crontab只允许分钟级别的执行,因为这是你真正应该启动脚本的最常见的情况-启动/关闭成本使得更快的调度效率低下。

如果您的应用程序需要每隔10秒检查一次队列,那么更好的策略可能是使用一个长时间运行的脚本来执行检查,并偶尔使用sleep()来阻止自己独占系统资源。

在UNIX系统上,这样的脚本实际上应该作为守护进程运行-看看PEAR System_Daemon包,看看如何简单地实现这一点。

票数 2
EN

Stack Overflow用户

发布于 2011-10-01 04:37:12

我刚刚遇到了通过cron和wget执行的长时间运行的PHP脚本的问题。由于wget中的默认超时,脚本在15分钟后终止。

但是,我相信如果您设置了正确的超时,这个方法实际上是有效的。您运行的PHP脚本需要设置为运行时间不受限制。最好在长时间运行的脚本开始时设置它。

代码语言:javascript
运行
复制
set_time_limit(0);

在使用wget时,您还需要通过传递-T0来删除它的超时。例如:

代码语言:javascript
运行
复制
wget -q0 -T0 http://yourhost/job.php

请非常小心,不要让长时间运行的脚本使您的服务器过载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/844831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档