crontab定时任务组件,没有按时间执行

阿慕同学

bug描述

需要用到定时器,设置了两个定时器对比效果,一个是Timer::add,一个是crontab定时,都是间隔5秒打印字符串,crontab运行时间总是会出现意外,不执行,或者时间不是5秒,感觉是 webman\process\Task.php 进程文件有些问题,求大神指点

程序代码或配置

#文件 \webman\plugin\webman\gateway\Events.php
Timer::add(5, function () use($c){
    echo date('Y-m-d H:i:s',time()).'-666-'."\n";
});

#文件 webman\process\Task.php
Timer::add(5, function () use($c){
    echo date('Y-m-d H:i:s',time()).'-555-'."\n";
});
new Crontab('*/5 * * * * *', function()use($c){
    echo date('Y-m-d H:i:s',time()).'-9-9-9-'."\n";
});

运行结果

运行结果

2022-10-12 11:39:01-9-9-9-
2022-10-12 11:39:05-555-
2022-10-12 11:39:05-666-
2022-10-12 11:39:06-9-9-9-
2022-10-12 11:39:10-555-
2022-10-12 11:39:10-666-
2022-10-12 11:39:11-9-9-9-
2022-10-12 11:39:15-555-
2022-10-12 11:39:15-666-
2022-10-12 11:39:16-9-9-9-
2022-10-12 11:39:20-555-
2022-10-12 11:39:20-666-
2022-10-12 11:39:21-9-9-9-
2022-10-12 11:39:25-555-
2022-10-12 11:39:25-666-
2022-10-12 11:39:26-9-9-9-
2022-10-12 11:39:30-555-
2022-10-12 11:39:30-666-
2022-10-12 11:39:31-9-9-9-
2022-10-12 11:39:35-555-
2022-10-12 11:39:35-666-
2022-10-12 11:39:36-9-9-9-
2022-10-12 11:39:40-555-
2022-10-12 11:39:40-666-
2022-10-12 11:39:41-9-9-9-
2022-10-12 11:39:45-555-
2022-10-12 11:39:45-666-
2022-10-12 11:39:46-9-9-9-
2022-10-12 11:39:50-555-
2022-10-12 11:39:50-666-
2022-10-12 11:39:51-9-9-9-
2022-10-12 11:39:55-555-
2022-10-12 11:39:55-666-
2022-10-12 11:39:56-9-9-9-
2022-10-12 11:40:00-9-9-9-
2022-10-12 11:40:00-666-
2022-10-12 11:40:05-666-
2022-10-12 11:40:10-555-
2022-10-12 11:40:10-666-
2022-10-12 11:40:15-666-
2022-10-12 11:40:20-666-
2022-10-12 11:40:25-666-
2022-10-12 11:40:30-666-
2022-10-12 11:40:35-666-
2022-10-12 11:40:40-666-
2022-10-12 11:40:45-666-
2022-10-12 11:40:50-9-9-9-
2022-10-12 11:40:50-666-
2022-10-12 11:40:55-666-
2022-10-12 11:41:00-666-
2022-10-12 11:41:05-666-
2022-10-12 11:41:10-666-
2022-10-12 11:41:15-666-
2022-10-12 11:41:20-666-
2022-10-12 11:41:25-666-
2022-10-12 11:41:30-666-

重现bug的步骤

刚开始运行正常,大概过几分钟,webman\process\Task.php 进程件中打印的两个定时就出问题了

系统环境及workerman/webman版本

Ubuntu 20.04.5 LTS Workerman version:4.0.39 PHP version:7.4.32

894 2 0
2个回答

阿慕同学

运行的进程

root@localhost:~# /usr/bin/php7.4 /www/webman_haining/start.php start
Workerman[/www/webman_haining/start.php] start in DEBUG mode
-------------------------------------------------------- WORKERMAN --------------------------------------------------------
Workerman version:4.0.39          PHP version:7.4.32           Event-Loop:\Workerman\Events\Select
--------------------------------------------------------- WORKERS ---------------------------------------------------------
proto   user            worker                                   listen                      processes    status
tcp     root            webman                                   http://0.0.0.0:8787         1             [OK]
tcp     root            monitor                                  none                        1             [OK]
tcp     root            task                                     none                        1             [OK]
tcp     root            plugin.webman.gateway-worker.gateway     websocket://0.0.0.0:7273    4             [OK]
tcp     root            plugin.webman.gateway-worker.worker      none                        8             [OK]
tcp     root            plugin.webman.gateway-worker.register    text://0.0.0.0:1236         1             [OK]
---------------------------------------------------------------------------------------------------------------------------
  • 暂无评论
walkor

这边测试没出现你说的不执行问题,可能是你的task进程还执行了耗时的业务影响了。

  • 暂无评论
年代过于久远,无法发表回答
🔝