如何在laravel中异步执行事件

时间:2016-09-29 18:46:11

标签: php laravel asynchronous

请问我还是laravel的新手,我已经在laravel中使用了几次事件,但我很好奇并且想知道是否可以异步执行laravel中的事件。例如,在下面的代码中:

    <?php

    namespace mazee\Http\Controllers;

   class maincontroller extends Controller
   {
    public  function index(){
       Event::fire(new newaccountcreated($user)) ;
      //do something

    }

事件被触发后,“newaccountcreated”事件的事件监听器中的代码块是否可能异步执行?

2 个答案:

答案 0 :(得分:6)

是的,当然这是可能的。你应该阅读Laravel Queues。每个驱动程序(仅 sync 驱动程序)都是异步的。最容易配置的是database驱动程序,但您也可以尝试RabbitMQ服务器,此处为Laravel bundle

您还可以添加到EventListener:newaccountcreated特质Illuminate\Queue\InteractsWithQueue(您可以阅读他here),这将有助于您将其与Laravel Queue连接。

答案 1 :(得分:1)

菲利普的答案涵盖了这一切。我会补充一点。如果你推送一个事件,它将转到默认队列。您也可以指定队列名称。让侦听器类实现ShouldQueue并在侦听器类中包含队列方法,如下所示。

/**
 * Push a new job onto the queue.
**/
public function queue($queue, $job, $data)
{
    return $queue->pushOn('queue-name', $job, $data);
}
相关问题