У меня есть класс работы в моем пакете. Функция проста, но требует много времени. Я хотел бы отправить его в фоновом режиме.
php artisan queue:work
работает.
<?php
namespace Mypackage\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Storage;
class StartLottery implements ShouldQueue{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $count;
public $competition;
public function __construct($count, $competition)
{
$this->count = $count;
$this->competition = $competition;
}
public function handle()
{
//code body
}
}
и в контроллере
dispatch((new StartLottery($count, $id))->onQueue('high'));
Мое соединение по умолчанию для очереди — база данных.
Моя цель — немедленно запустить это задание в фоновом режиме и разблокировать браузер, чтобы выполнить другие инструкции, такие как перенаправление.
К сожалению, следующие вещи делают после окончания работы. Наконец пользователь долго ждет ответа от сервера после его запроса.
Заранее спасибо за любые подсказки, как я могу переместить эту работу в фоновый режим.
среда:
Задача ещё не решена.
Других решений пока нет …