我设置了一个 cron 任务,每小时 wget 一个 PHP 脚本。但是,它似乎陷入了循环并不断运行。如果我在浏览器中或通过命令行运行该脚本,它会正常工作。我尝试使用 wget 和命令行 PHP,但遇到了同样的问题。
这是我的工作:
0, 9-18, * * 1-5 wget http://www2.lichfielddc.gov.uk/planning/cron.php
答案1
从分钟和小时列中删除逗号。明确指定超时和重试,例如
0 9-18 * * 1-5 wget -a /tmp/cron.log --tries=1 --timeout=90 http://www.example.com
您可能希望在测试期间添加日志,这已-a
在示例中完成。
[评论后编辑:]
要了解它不是 wget 特有的,您可以将 cron 命令行替换为一个 timeout 命令,该命令的持续时间比我在示例中添加的 90 秒超时更长:
timeout --kill-after=110 --signal=15 110 wget -a /tmp/cron.log --tries=1 --timeout=90 http://www.example.com
wget 应该在 90 秒后停止,如果没有,则timeout
在 110 秒后终止它。(信号 SIGTERM=15 应该足够,如果没有,则使用 SIGKILL=9)。