2016-09-29 22 views
2

Pls私はまだlaravelの新機能ですが、いくつかlaravelでイベントを使用しましたが、興味があり、laravelでイベントを非同期に実行できるかどうかを知りたいと思います。以下のコードでのインスタンスのように:laravelでイベントを非同期に実行する方法

<?php 

    namespace mazee\Http\Controllers; 

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

    } 

イベントが発生した後に非同期に実行されるように、「newaccountcreated」イベントのイベントリスナーのコードのブロックのために、それは可能ですか?

+0

いいえ。phpプロセスには常に1つのスレッドがあります。はい、可能ですが、Laravelのためではありません。私は推測します。 – Deep

答えて

5

もちろんこれが可能です。 Laravel Queuesについてお読みください。すべてのドライバ(同期ドライバのみ)は非同期です。最も簡単な設定はdatabaseドライバですが、RabbitMQサーバを試してみることもできます。こちらはLaravel bundleです。

EventListenerにnewaccountcreated trait Illuminate\Queue\InteractsWithQueue(これについて読むことができますhere)を追加すると、Laravel Queueとの接続に役立ちます。

1

フィリップスの答えはすべてそれをカバーしています。私はもう少しそれを追加します。イベントをプッシュすると、デフォルトのキューに移動します。キュー名も指定できます。リスナークラスにShouldQueueを実装させ、以下のようにキューメソッドをリスナークラスに含めます。

/** 
* Push a new job onto the queue. 
**/ 
public function queue($queue, $job, $data) 
{ 
    return $queue->pushOn('queue-name', $job, $data); 
} 
関連する問題