laravel - Laravel 调度程序是否有可能跳过命令?
问题描述
我有一个 Kernel.php,其中定义了许多不同的命令,如下所示:
(Laravel v5.5.*)
<?php
.....
protected function schedule(Schedule $schedule)
{
$fileCronLog = '/var/log/laravel-scheduler.log';
$schedule->command('do:something params...')->everyFiveMinutes()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyTenMinutes()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyFiveMinutes()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyTenMinutes()->appendOutputTo($fileCronLog);
$schedule->command('do:something params...')->everyThirtyMinutes()->appendOutputTo($fileCronLog);
.......
我注意到有时就像某些进程/命令根本没有启动......
这与频率较低的命令相匹配,例如:
everyTenMinutes
,everyThirtyMinutes
......
我假设当 crontab 启动 Laravel 时schedule:run
,Laravel 可能会在内部排队所有预定的命令......也许第一个命令需要超过一分钟的时间来处理......所以当命令everyTenMinutes
的时间已经过去了和 Laravel 跳过执行....
是这样吗?或者,如果 Laravel 过载,可能会在一段时间后放弃处理调度?
我已经注意到 Laravel 不会分叉 php 进程,而是按顺序执行它们。在过去,我通过直接在 crontab 中并行执行一些命令来解决这个问题......
我该如何克服呢?有没有我可以直接利用框架的方法或选项?
解决方案
推荐阅读
- javascript - 如何在列表中的指定单击按钮上设置“加载器”状态:反应
- hive - 如何为源命令传递beeline hive var?
- r - 如何在 shinyApp 中将边框半径设置为 valueBox()?
- python - 如何在python中从具有多个掩码的单个图像创建包含每个图像一个实例掩码的单独图像
- python - 当新事件进入事件队列时如何取消matplotlib回调事件?
- mysql - 宏后的 MS 访问无法在链接表中插入新创建的记录
- c# - 来自 API 的 HttpResponseMessage 返回类型的空参数异常
- virtual-machine - 带有 guestinfo 属性的 VMWare 环境中的 ovf 部署
- python - Selenium:无法遍历页面上的子表,我在正确的框架中吗?
- android-studio - 运动布局:如何更改最后一帧的视图可见性