我的包中有工作班。功能简单但耗时。我想发送它在后台运行。
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'));
我的队列默认连接是数据库。
我的目标是立即在后台运行此作业并解锁浏览器以执行其他指示,例如重定向。
不幸的是,接下来的事情正在完成工作之后。最后,用户在请求后等待服务器响应很长时间。
提前感谢任何提示我如何将此工作转移到后台。
环境: