イベント作成、実態はデータのシリアライズとブロードキャストの発行処理。
フロントエンドにプログレスバーを実装しているならpusher等で進捗状態を通信可能。
なお、ブロードキャストは処理開始時に送信されるので、進捗状況や完了のブロードキャストを実装する場合はこのファイルのbroadcastOn()は不要で後述のイベントに実装する。
php artisan make:event ReportCreating
リスナーの作成、イベントと紐付けて処理実態の実装
DBへは行ロックが必須となるので、DB処理はなるべく簡素にする。
With句を使ったリレーション処理は避けた方が良い。
キュープロセスを多数作成すると、こちら側でバッティングすることは少なくJOBテーブルの制御側でデッドロックするので注意。
php artisan make:listener MakeReport --event=ReportCreating
プログレスバーのような終了イベントが必要なければ(投げっぱなし)ここまでで良い。
終了イベント作成、リスナーの最終チェックから呼ばれるようにし、進捗状況をブロードキャストする。
php artisan make:event ReportProgress
名前空間の注意点として
イベントが増えてくると名前空間で分けたくなるのだが、動作確認後に手で修正することになった。
コマンド実行時に名前空間を指定してもクラス名に含まれるだけだった。
Laravel11ではイベントとリスナーの関係を別で書き込まれる箇所はないようだ。
投稿者プロフィール
最新の投稿
Laravel2025年4月11日XServer Lalavelのタスクスケジューラー
ぼやき2025年4月11日Google Search Console セキュリティの問題
Git2025年4月3日GithubActionsでのSSH系エラー
Git2025年3月21日git コマンド集