1

我的包裹里有工作课程。功能简单但耗时。我想将它发送到后台运行。

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
4

0 回答 0