Crontab出现在特定时段内没有执行,如何排查?

lscho

问题描述

在webman框架中使用自定义进程的方式,开启了一个进程用于处理定时任务。但是发现凌晨2~3点的任何定时去都无法触发。其他时段又正常

配置

<?php
// config/process.php

return [
    // 定时任务
    'task'    => [
        'handler' => process\Task::class,
    ],
];

自定义进程

<?php
namespace process;

use Workerman\Crontab\Crontab;

class Task
{
    public function onWorkerStart()
    {
        // 每20分钟执行一次
        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 * * *均没有触发,0 */20 * * * *这个规则全天都有触发,但是到2~3点没有触发,知道4点重新开始触发

操作系统环境及workerman/webman等具体版本

阿里云CentOS 7
php7.4
webman1.4

61 0 0
0个回答

🔝