在webman框架中使用自定義進程的方式,開啟了一個進程用于處理定時任務(wù)。但是發(fā)現(xiàn)凌晨2~3點的任何定時去都無法觸發(fā)。其他時段又正常
<?php
// config/process.php
return [
// 定時任務(wù)
'task' => [
'handler' => process\Task::class,
],
];
<?php
namespace process;
use Workerman\Crontab\Crontab;
class Task
{
public function onWorkerStart()
{
// 每20分鐘執(zhí)行一次
new Crontab('0 */20 * * * *', function () {
echo '定時器:' . date('Y-m-d H:i:s') . PHP_EOL;
});
// 凌晨3點定時器
new Crontab('0 0 3 * * *', function () {
echo '定時器:' . date('Y-m-d H:i:s') . PHP_EOL;
});
// 凌晨2點定時器
new Crontab('0 0 2 * * *', function () {
echo '定時器:' . date('Y-m-d H:i:s') . PHP_EOL;
});
}
}
查看日志顯示,0 0 3 * * *
與0 0 2 * * *
均沒有觸發(fā),0 */20 * * * *
這個規(guī)則全天都有觸發(fā),但是到2~3點沒有觸發(fā),知道4點重新開始觸發(fā)
阿里云CentOS 7
php7.4
webman1.4
使用 workerman/crontab需要先設(shè)置好php的時區(qū),否則運行結(jié)果可能和預(yù)期的不一致。
我建議直接使用系統(tǒng)的crontab 執(zhí)行curl 調(diào)用你的一個API接口