如何迫使laravel等待结束工作?

时间:2019-07-08 14:07:10

标签: php laravel queue jobs

我在控制器中的函数调用并行,并且在laravel中创建了一个使用队列的作业,因为并行调用会导致问题

我创建队列如下:

public function serve($id)
{
    $this->dispatch(new OrderServeJob($id));
    return response()->json(true);
}

然后我跑:

php artisan queue:work

但是我对此方法有疑问

我希望laravel等待队列结束,然后返回response()->json(true)

然后将用户重定向到另一个地址

2 个答案:

答案 0 :(得分:0)

您可以使用队列事件。说明如何在文档中使用: job Events laravel

答案 1 :(得分:0)

如果您希望在通话结束之前处理您的工作,则应使用sync驱动程序进行工作。您可以自定义要在您的工作中使用的Job连接:

class OrderServeJob implements ShouldQueue {

    public $connection = 'sync'; // <---


    //

}

您可以在config/queue.php文件中查看此(和其他)队列配置:

'connections' => [

    'sync' => [
        'driver' => 'sync',
    ],

    //

]

检查文档的Customizing The Queue & Connection部分。