Как заставить laravel ждать до конца работы? - PullRequest
0 голосов
/ 08 июля 2019

моя функция в контроллере Вызов параллельный, и я создаю задание для очереди использования в laravel, потому что параллельный вызов вызывает проблему

Я создаю очередь следующим образом:

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

и я бегу:

php artisan queue:work

Но у меня есть проблема с этим методом

Я хочу, чтобы laravel дождался окончания очереди, а затем вернул response()->json(true)

и после перенаправления пользователя на другой адрес

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Если вы хотите, чтобы ваша работа была обработана до завершения вызова, вам следует использовать драйвер sync для вашей работы. Вы можете сделать это, настроив соединение Job для использования в своей работе:

class OrderServeJob implements ShouldQueue {

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


    //

}

Вы можете посмотреть конфигурацию этой (и других) очередей в файле config/queue.php:

'connections' => [

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

    //

]

Проверьте Настройка раздела «Очередь и соединение» документации.

0 голосов
/ 08 июля 2019

Вы можете использовать события очереди. Объяснение, как использовать в документации: работа События Laravel

...