无法在 laravel 队列中异步处理 运行 个作业

Cannot run jobs in asynchronous in laravel queue

我想 运行 在 php 5.5 和 laravel 中异步执行一些任务。我用谷歌搜索发现 laravel 队列可以做这样的事情。我找到这个 link 寻求帮助:https://laravel.com/docs/5.1/queues。 我已经安装了依赖项:

亚马逊 SQS:aws/aws-sdk-php~3.0

Beanstalkd:pda/pheanstalk~3.0

IronMQ:iron-io/iron_mq~2.0|~4.0

Redis: predis/predis ~1.0

并且我在 laravel.Here 中添加了队列表是我的工作 class

class SearchFromSource extends Job implements SelfHandling{
    use InteractsWithQueue, SerializesModels;
    private $provider;
    private $query;
    private $pageToken;
    private $parameters;
    private $needDetails;

    public function __construct()
    {
    }

    public function handle()
    {
        sleep(5);
    }
}

这里是我发送任务的地方:

class SearchController extends Controller{
     ...
     public function prepareResults($query, $page, $ip){
        $job = (new SearchFromSource($curVideoProvider,$this->query,$curVideoProvider->getDefaultParameters(),$curPageToken,$curVideoProvider->needDetails()))->onQueue("q1");
        $this->dispatch($job);
        $job2 = (new SearchFromSource($curVideoProvider,$this->query,$curVideoProvider->getDefaultParameters(),$curPageToken,$curVideoProvider->needDetails()))->onQueue("q2");
        $this->dispatch($job2);
    }

}

问题是 laravel 不会 运行 作业异步。有什么问题。

  1. 首先,您必须在 .env 文件中定义一个 QUEUE_DRIVER(sync、redis、beanstalk 等)
  2. 那么你必须有一个队列监听器 运行在你的项目目录 运行 php artisan queue:listen
  3. 你的工作应该实现 shouldQUeue 接口