2016-09-21 4 views
0

CRUD、アップロード、およびメールを実行するイベントがいくつかあります。これらのイベントを待ち行列に入れたいと思います。私はいくつかの調査を行い、私が行う必要があることは、私のキュードライバを設定し、イベントリスナでShouldQueueコントラクトを実装することであることがわかりました。私はキャッシュとセッションドライバとしてredisを使用しているので、私は先に進み、私のキュードライバとしてredisを使用しました。 ShouldQueueを使わずに私のイベントを起動すると、すべて正常に動作し、電子メールが届き、データはDB ..などに追加されます。しかし、ShouldQueueをイベントリスナーに追加してキューを実行すると、イベントは発生しますが、キュー内で何も追加または実行されません。私はまた、電子メール、DB ...などを取得していません。私は何が欠けていますか?ここに私のコードの例です:Laravel 5.2キューイングイベント

.envファイル

のApp \イベントは、お問い合わせ\ CustomerContactUs

use SerializesModels; 
/** 
* Create a new event instance. 
*/ 
public function __construct() 
{ 

} 

のApp \リスナーが

private $mailer; 
private $request;  
public function __construct(Mailer $mailer, Request $request) 
{ 
    $this->mailer = $mailer; 
    $this->request = $request; 
} 
public function handle(CustomerContactedBullard $event) 
{ 
.... 
$this->mailer->send('public.emails.contact_us',$this->request->all(),$params); 
} 

ContactedUs \ SendCustomerEmailToUsを\ \

QUEUE_DRIVER=redis 
ContactUsController

event(new ContactedUs\CustomerContactedUs()); 

私は

php artisan queue:listen 

を実行するターミナルは、あなたがそうのようEventServiceProviderで有効なエントリを追加する必要があり、あなたに

答えて

0

ありがとう:

protected $listen = [ 
    \App\Events\ContactUs\CustomerContactUs:class => [ 
     \App\Listeners\ContactedUs\SendCustomerEmailToUs::class, 
    ], 
]; 
+0

申し訳ありませんが、私はEventServiceProviderにそれらのクラスが追加されていることを言及するのを忘れてしまいました。私は私の問題を発見した。私は要求を使用していた - >私のリスナーに取得します。フォームコンストラクタを通してフォームデータを渡す必要があります。私のキューが私のモデルのグローバルスコープにアクセスすることができないということは今のところ問題です。私がモデルに問い合わせるとき、グローバルスコープが設定されています。キューはそれにアクセスしないので、クエリでwithoutGlobalScopes()を使用せずにクエリできません – rafiaTech