Php Laravel调度程序don';不能运行命令,但可以手动运行
我要按计划运行这3个命令Php Laravel调度程序don';不能运行命令,但可以手动运行,php,laravel,schedule,Php,Laravel,Schedule,我要按计划运行这3个命令 $schedule->command(“update:branchsales”)->everyFiveMinutes()->时区(“美国/圣保罗”)->不重叠(); $schedule->command(“update:billing”)->everyFiveMinutes()->时区('America/SaoèPaulo')->无重叠(); $schedule->command(“update:sales”)->everyFiveMinutes()->时区('Amer
$schedule->command(“update:branchsales”)->everyFiveMinutes()->时区(“美国/圣保罗”)->不重叠();
$schedule->command(“update:billing”)->everyFiveMinutes()->时区('America/SaoèPaulo')->无重叠();
$schedule->command(“update:sales”)->everyFiveMinutes()->时区('America/SaoèPaulo')->不重叠();
但在日志中,我们只能看到其中两个正在实际运行
没有可运行的计划命令。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:sales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:branchsales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:sales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:branchsales>'/dev/null'2>&1
没有计划的命令可以运行。
我可以手动运行更新:计费,但它突然停止运行,按计划运行
他们都一直跑到昨天
任何帮助都将不胜感激
编辑:
更新:销售现在也停止了
没有可运行的计划命令。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:sales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:branchsales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:sales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:branchsales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:branchsales>'/dev/null'2>&1
没有计划的命令可以运行。
没有计划的命令可以运行。
没有计划的命令可以运行。
没有计划的命令可以运行。
正在运行计划命令:'/usr/local/bin/php''artisan'更新:branchsales>'/dev/null'2>&1
检查正在运行的进程,可能该命令正在工作(卡住)并且没有运行,因为没有重叠
ps aux | grep'php artisan'
几天前,经过一些研究,我得出了以下解决方案,我遇到了几乎相同的问题
protected function osProcessIsRunning($needle)
{
// get process status. the "-ww"-option is important to get the full output!
exec('ps aux -ww', $process_status);
// search $needle in process status
$result = array_filter($process_status, function($var) use ($needle) {
return strpos($var, $needle);
});
// if the result is not empty, the needle exists in running processes
if (!empty($result)) {
return true;
}
return false;
}
protected function schedule(Schedule $schedule)
{
if (!$this->osProcessIsRunning('update:sales')) {
$schedule->command("update:branchsales")->everyFiveMinutes()->timezone('America/Sao_Paulo')->withoutOverlapping();
}
//Similarly do for other two commands
}
现在只在cron作业中运行schedule命令,如schedule:run,它还将防止服务器上的额外负载,我在Laracast forget链接上找到了这个答案,否则我将共享 我找到了那个问题的答案。希望它能帮助别人
刚刚在项目文件夹上执行了php artisan cache:clear
,现在一切都正常了。仅更新:branchsales正在运行,还有其他猜测吗?我删除了,只是为了测试,没有重叠,一切正常!我只是不知道,为什么它昨天起作用,而今天没有,有任何更新?@ThRnk idk为什么,但重叠的问题。添加启动/完成控制台命令的日志。或者添加一些监控软件包,比如我删除的一个不重叠的软件包,只是为了测试,它工作了!我只是不知道,为什么它昨天工作,而今天没有,有任何更新?据我所知,如果我们在服务器上手动运行命令,它运行了一段时间,然后经过一段时间后,它停止了,我所做的就是编写这个函数,并在每分钟后运行一次计划,以防它停止,重新启动我们的命令,经过多次尝试后,这对我来说是有效的。