【发布时间】:2014-06-21 00:25:47
【问题描述】:
我有一个 CronJob 计划每 7 分钟运行一次。该脚本在多个用户上运行一个循环,并通过 SMTP 发送电子邮件或通过 curl 进行一些 API 调用。
因此,大部分执行时间显然花费在 Linux 上 max_execution_time 跟踪的领域之外。所以,因为我的脚本遇到挂起,总是通过重新启动它来修复(我也在寻找挂起的原因,但到目前为止还没有成功)。
因为 set_time_limit 设置为 6 分钟,脚本有时仍会运行 30 分钟,我现在在循环中的每一轮后检查 microtime(true),如果它已运行超过 6 分钟,则退出它。
不过,脚本有时会运行 37 分钟(尽管我可以看到循环映射到一轮的电子邮件仍然会消失)。
我剩下的唯一技巧是pcntl_fork。由于平台依赖性,我不愿意使用它,因为我认为使用循环和microtime(true) 也应该跟踪在进程之外花费的时间,我想了解为什么这里不是这种情况。
【问题讨论】: