如何使两个作业之间的延迟?

问题描述 投票:1回答:2

我用laravel工作我试图派遣两个作业有延迟,但它不工作。

我的想法是派遣X的工作与他们之间的延迟。

等待10秒调度 - >作业1

等待10秒调度 - >工作2

等待10秒调度 - >作业3

等等 ...


artisan queue:work --tries=1  --queue=generate-xml


generateXML::dispatch($this->account)
                    ->onQueue('generate-xml')
                    ->delay(Carbon::now()->addSeconds(10));
php laravel jobs
2个回答
1
投票

这听起来像或者要暂停提交作业之间的主要流程或者你想错开上的作业本身的延迟。

如果你真的需要暂停十秒钟,然后就可以使用sleep(10)

如果你想只执行工作之间的约10秒的等待,那么你应该在10秒延时20添加到第一,第二,30到第三等。


0
投票

我猜以下位在一个循环中完成:

generateXML::dispatch($this->account)
                ->onQueue('generate-xml')
                ->delay(Carbon::now()->addSeconds(10));

对?如果是这样的情况下,delay()方法只是延迟从你排队它的时间的作业的执行,因此,如果您正在排队10个就业机会,现在你希望有每10秒执行,则需要10秒递增延迟每个调度您在循环调用。

或者,您也可以发送你的第一个结束了新工作,然后队列中的下一个10秒一个新的延迟为好。

请记住,虽然有些队列(如亚马逊)不允许无限延迟,但强加多久,你可以保持项目的队列限制...

© www.soinside.com 2019 - 2024. All rights reserved.