【发布时间】:2011-06-21 05:06:49
【问题描述】:
我的托管服务提供商只允许我每 2 小时运行一次 cronjob。因为我需要它每秒运行一次,所以我制作了一个可以运行 2 小时的页面。另外,我是用 ZF 开发的;所以页面需要被引导,这意味着 cronjob 需要调用一个网址。
到目前为止,我的 bash 脚本每两个小时运行一次:
#!/bin/bash
wget "http://www.mysite.co.za/ajax/cron"
但是,它会在几分钟后停止并出现以下错误:
--2011-02-04 09:32:32-- http://www.mysite.co.za/ajax/cron
Resolving www.mysite.co.za... 123.40.97.157
Connecting to www.mysite.co.za|123.40.97.157|:80... connected.
HTTP request sent, awaiting response... 500 Internal Server Error
2011-02-04 09:37:33 ERROR 500: Internal Server Error
我对 cronjobs/bash 脚本了解不多,但我认为它正在超时?谁能证实这一点?如果是这样,我将研究 curl_mutl_init 以发回响应并同时保持进程处于活动状态 - 我认为我无法访问进程控制功能。
如果有人有任何提示/建议,请不要犹豫。
【问题讨论】:
-
您是否有权访问 (Apache) 网络服务器的错误日志文件?应该记录特定的错误。
-
如果您每秒运行一次作业,则很可能在任何给定时间您都有多个进程在执行相同的操作,因为可以想象,一项作业可能需要一秒钟以上的时间才能完成。您是否正确管理锁定?
-
@initall,不,没有这样的日志文件。我也无权更改 apache 设置。
-
@tim,我不太清楚你所说的锁定是什么意思。这个过程非常小,不超过100ms。我目前运行一个函数循环;进行检查,然后休眠 900 毫秒。我只需要它连续执行 2 小时/7200 次而不会中断。
标签: php bash zend-framework timeout cron