考虑以下 cron 作业:
* 22-23 * * * /usr/bin/curl -u username:paswword http://api.example.com/api/test2.php
现在,根据这个,cron 作业必须从 22h00(UTC)开始每分钟运行一次,但事实并非如此。它在此时间之前启动,并且不会持续整整一个小时。因此,我将执行时间写入数据库表,只是为了查看发生了什么。以下是我得到的结果:
表示systemDateTime
cron 作业的执行时间。如您所见,它仅执行了 6 次,并且在计划时间前约 6 分钟启动。
此系统配置相关吗? cron 作业位于 Apache 共享服务器上。我是否遗漏了什么?
更新:我使用以下 PHP 代码来获取系统日期时间和我的时区日期时间:
$systemDateTime = date('Y-m-d H:i:s');
$dateNow = new DateTime("now", new DateTimeZone('GMT+2'));
$zoneDateTime = $dateNow->format('Y-m-d H:i:s');
答案1
在命令中添加时区似乎可以解决问题。这是新的 cron 作业:
* 22 * * * TZ=GMT+2 /usr/bin/curl -u username:password http://api.example.com/api/test2.php
另外,我不确定为什么它只执行了第一个 cron 作业 6 次,但现在它运行良好。