Laravel11、イベント型の並列処理作成コマンド

イベント作成、実態はデータのシリアライズとブロードキャストの発行処理。
フロントエンドにプログレスバーを実装しているならpusher等で進捗状態を通信可能。
なお、ブロードキャストは処理開始時に送信されるので、進捗状況や完了のブロードキャストを実装する場合はこのファイルのbroadcastOn()は不要で後述のイベントに実装する。

php artisan make:event ReportCreating

リスナーの作成、イベントと紐付けて処理実態の実装
DBへは行ロックが必須となるので、DB処理はなるべく簡素にする。
With句を使ったリレーション処理は避けた方が良い。
キュープロセスを多数作成すると、こちら側でバッティングすることは少なくJOBテーブルの制御側でデッドロックするので注意。

php artisan make:listener MakeReport --event=ReportCreating

プログレスバーのような終了イベントが必要なければ(投げっぱなし)ここまでで良い。

終了イベント作成、リスナーの最終チェックから呼ばれるようにし、進捗状況をブロードキャストする。

php artisan make:event ReportProgress

名前空間の注意点として
イベントが増えてくると名前空間で分けたくなるのだが、動作確認後に手で修正することになった。
コマンド実行時に名前空間を指定してもクラス名に含まれるだけだった。

Laravel11ではイベントとリスナーの関係を別で書き込まれる箇所はないようだ。

投稿者プロフィール

TakaharaRyuji
PAGE TOP