问答 / 12 / 7 / 创建于 5年前
发现了一个现象(不确定,有待再观察): 比如我在00:00设置了任务A,00:05设置了任务B。 如果任务A执行花费了整整一小时,任务B就会从01:05开始执行。
每分钟启动一个进程,依次执行这一分钟需要执行的任务。
如果想要这些任务并发执行,需要使用 runInBackground
$schedule->command("xxxxxx")->dailyAt('xx:xx')->runInBackground()->appendOutputTo("xxxxx/xxxxx/xxxx");
@kiyoma 最好是这样写,一劳永逸: 在schedule方法最后这么写,设置所有定时任务都后台执行
我的理解是任务调度是通过Linux 的crontab 来实现的,所以不是单线程执行
我也遇到这个问题了
默认情况下,即使之前的任务实例还在执行,调度内的任务也会执行。为避免这种情况的发生,你可以使用 withoutOverlapping 方法:
按时间执行的。
使用runInBackground
runInBackground
其实你这个问题可以结合着queue来做,把耗时的的任务写成一个 queue task让队列去执行这个,就不会阻塞后续的任务调度。
queue
queue task
我要举报该,理由是:
推荐文章: