2015-04-23 136 views
4

假设我有三个命令我想安排: “commandA”,“commandB”和“commandC”Laravel Artisan调度程序中的链接命令?

但我不希望运行“commandB”直到“commandA”是完整的,我不在'commandB'完成之前,要运行'commandC'。

我知道我可以安排到每一个每五分钟运行:

$schedule->command('commandA')->everyFiveMinutes(); 
$schedule->command('commandB')->everyFiveMinutes(); 
$schedule->command('commandC')->everyFiveMinutes(); 

但有可能给它们链一前一后?

回答

12

使用then(Closure $callback)到链命令:

$schedule->command('commandA')->everyFiveMinutes()->then(function() { 
    $this->call('commandB'); 
    $this->call('commandC'); 
}); 
+0

其实这似乎并没有工作。第一个问题是,$ schedule变量在Closure内是未知的。修正了通过使用'使用'。 我会看到commandA被执行,但commandB和commandC未被执行。 我最终让他们运行的一种方式是使用$ this-> call('commandB');在关闭。 – wkm

+0

@wkm谢谢你的回复!请对我的答案进行更改,我可以将这些更改应用到它。 –

+1

@wkm刚刚在我的沙箱中测试了这个,并修改了我的答案。 100%工作和现在测试:) –

相关问题