Laravel 调度程序命令永远不会运行第二次
Laravel scheduler command never runs a 2nd time
我已将调度程序配置为每分钟 运行 一次以执行两个命令:
$schedule->command('amazon:read-sqs')
->everyMinute()
->runInBackground()
->withoutOverlapping()
->sendOutputTo(storage_path('logs/cmd/amazon_read_sqs.log'), true)
->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh1');
$schedule->command('jobs:dispatcher', ['--max' => 100])
->everyMinute()
->runInBackground()
->withoutOverlapping()
->sendOutputTo(storage_path('logs/cmd/jobs_dispatcher.log'), true)
->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh2');
过去一个月的开发运行非常棒。但是,在使用 Envoyer 将我们的服务器设置为 运行 之后,调度程序在第一次之后突然不再执行。
换句话说,如果在 Forge 中将计划设置为每分钟,它会 运行 执行一次,然后永远不会附加日志。
我添加了 Envoyer 心跳以每 10 分钟跟踪一次,但它不会触发 thenPing()
方法来通知 Envoyer...即使在第一次 运行.
之后
我可以删除 cron 条目并重新创建它,强制它 运行 那一次。
如果给他们自己的 cronjob,所有这些 运行 都很好。
当我检查任何 /storage/framework/schedule-*
锁定文件时,我发现没有任何要删除的东西可能会阻止它们。
Laravel 日志文件中没有任何内容显示问题。
有什么想法吗?
通过将 cronjob 从 php /home/forge/default/artisan schedule:run
更改为 php /home/forge/default/current/artisan schedule:run
解决了这个问题
这允许 Laravel 调度程序正确地 运行。然而,方法 thenPing
和 pingBefore
仍然没有真正发挥作用。
为了解决这个问题,我必须在每个命令后手动添加这一行:
(new Client())->get('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh');
为什么内置的 ping 方法不起作用是个谜。很想知道为什么。
我已将调度程序配置为每分钟 运行 一次以执行两个命令:
$schedule->command('amazon:read-sqs')
->everyMinute()
->runInBackground()
->withoutOverlapping()
->sendOutputTo(storage_path('logs/cmd/amazon_read_sqs.log'), true)
->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh1');
$schedule->command('jobs:dispatcher', ['--max' => 100])
->everyMinute()
->runInBackground()
->withoutOverlapping()
->sendOutputTo(storage_path('logs/cmd/jobs_dispatcher.log'), true)
->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh2');
过去一个月的开发运行非常棒。但是,在使用 Envoyer 将我们的服务器设置为 运行 之后,调度程序在第一次之后突然不再执行。
换句话说,如果在 Forge 中将计划设置为每分钟,它会 运行 执行一次,然后永远不会附加日志。
我添加了 Envoyer 心跳以每 10 分钟跟踪一次,但它不会触发 thenPing()
方法来通知 Envoyer...即使在第一次 运行.
我可以删除 cron 条目并重新创建它,强制它 运行 那一次。
如果给他们自己的 cronjob,所有这些 运行 都很好。
当我检查任何 /storage/framework/schedule-*
锁定文件时,我发现没有任何要删除的东西可能会阻止它们。
Laravel 日志文件中没有任何内容显示问题。
有什么想法吗?
通过将 cronjob 从 php /home/forge/default/artisan schedule:run
更改为 php /home/forge/default/current/artisan schedule:run
这允许 Laravel 调度程序正确地 运行。然而,方法 thenPing
和 pingBefore
仍然没有真正发挥作用。
为了解决这个问题,我必须在每个命令后手动添加这一行:
(new Client())->get('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh');
为什么内置的 ping 方法不起作用是个谜。很想知道为什么。