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