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