1.
config/app.php
return [
'debug' => true,
'default_timezone' => 'Asia/Shanghai',
];
2.
process/test.php
(每天早上10点 和 11点,这样是可以准时执行的,查看对应的日志,有内容输出)
public function onWorkerStart(Worker $worker)
{
$workerId = $worker->id;
new Crontab('0 0 10,11 * * *', function () use ($workerId) {
echo date('Y-m-d H:i:s') . PHP_EOL;
});
}
3.
但如果把定时任务换成如下(每天凌晨1点 和 每天凌晨4点)
定时任务就不会执行
public function onWorkerStart(Worker $worker)
{
$workerId = $worker->id;
new Crontab('0 0 1,4 * * *', function () use ($workerId) {
echo date('Y-m-d H:i:s') . PHP_EOL;
});
}
4.
0 0 1,4 * * *
,启动服务,今天早上发现没有对应的日志输出0 0 10,11 * * *
,然后 restart
服务
这是10点11点
这是 1点4点
O(∩_∩)O哈哈~
下班之前,定时任务,设置为
0 0 1,4 * * *
,启动服务,早上来公司,发现没有日志输出然后,再调整为
0 10,11 * * *
,早上10点 和 早上11点,有日志输出这就有问题了啊
为啥凌晨的任务没有执行呢
0 0 1,4 * 这个不是凌晨1点和4点,看上面
请问大佬
为什么设置为
new Crontab('0 1,4 * * *'
,在凌晨1点 和 凌晨4点,依然没有执行呢?定时任务的执行规则,在分钟级的定义时,与 Linux 的 crontab 命令的规则一致,在秒级的定义时,规则长度从 5 位变成 6 位,在规则的前面增加了对应秒级的节点,也就是 5 位时以分钟级规则执行,6 位时以秒级规则执行,如 /5 则代表每 5 秒执行一次。注意在注解定义时,规则存在 \ 符号时,需要进行转义处理,即填写 \/5
为什么设置为
new Crontab('0 1,4 * * *'
,在凌晨1点 和 凌晨4点,依然没有执行呢?先学习一下crontab表达式:https://www.runoob.com/linux/linux-comm-crontab.html
看了一下,这个表达式是没问题的,只是没数据,所以没有日志输出,谢谢大佬
你日志输出是写入日志文件,还是在终端输出的
写入日志的,是这样的
因为没有符合条件的结果,所以永远不会走到回调函数内,所以不会发送数据到队列里
我在队列里,把接收到的数据,写入日志
你最好是移除掉你的业务逻辑,直接使用系统自带日志系统Log(Log::info('xxxxxxxxxxxx')),尝试记录日志。先排查是不是定时任务插件的问题。继而排查业务问题。(初步判断是你业务和队列有问题)
是的
就打算这样排查
谢谢大佬