Php Laravel调度程序don';不能运行命令,但可以手动运行

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

我要按计划运行这3个命令

$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为什么,但重叠的问题。添加启动/完成控制台命令的日志。或者添加一些监控软件包,比如我删除的一个不重叠的软件包,只是为了测试,它工作了!我只是不知道,为什么它昨天工作,而今天没有,有任何更新?据我所知,如果我们在服务器上手动运行命令,它运行了一段时间,然后经过一段时间后,它停止了,我所做的就是编写这个函数,并在每分钟后运行一次计划,以防它停止,重新启动我们的命令,经过多次尝试后,这对我来说是有效的。