Laravelキューqueue(database編)

3022 ワード

キュー
Laravelキューサービスは、さまざまなバックグラウンドキューに統一されたAPIを提供し、メールの送信などの時間のかかるタスクの実行を遅らせることができ、Webリクエストの速度を大幅に向上させることができます.
プロファイル
  • Config/queue.php(このファイルは変更する必要はありません)サポートモードSupported:[sync]、[database]、[beanstalkd]、[sqs]、[redis]、今回databaseを例に//デフォルトで選択したのは同期駆動'default'=>env('QUEUE_DRIVER','sync')、
  • env(databaseドライバに変更)QUEUE_DRIVER=database

  • 実装手順
  • キューに格納必要なデータテーブルは、以下の操作コマンドを実行して、キューに必要なデータテーブルjobs
  • を生成することができる.
    php artisan queue:table
    php artisan migrate
    
  • タスククラス作成
  • php artisan make:job SendEmail
    

    このときapp/jobsディレクトリの下にSendEmailが生成する.php
    to($this->email);
            });
        }
    }
    

    キューで完了する必要がある操作をhandle()メソッドに書き込みます.
  • タスクをキュー
  • にプッシュ
  • は、Controllerにおいてタスク
  • をプッシュすることができる.
    public function queue()
    {
        //dispatch     controller     
        dispatch(new SendEmail('…………@qq.com'));
    }
    
  • さらによく使われるのはModel::saved()におけるプッシュタスク
  • です.
    public function saved(User $user)
     {
          dispatch(new SendEmail('…………@qq.com'));
    }
    

    メッセージプッシュを実行すると、データベースjobsテーブルに複数のデータが表示されます.
  • キューリスナーを実行する(タスクのキュー実行を実現する)(1).Listen php artisan queue:listen//指定されたキューをリスニング//--queueリスニングされたキュー//--delay失敗したタスクの実行に遅延時間を設定(デフォルト:0)//--memoryメモリ制限サイズ、単位MB(デフォルト:128)//--timeoutタスク実行タイムアウト秒数(デフォルト:60)//--sleepチェック待ちキュータスクの秒数(デフォルト:3)//--triesタスクレコード失敗再試行回数(デフォルト:0)php artisan queue:listen[--queue[="...]][--delay[="..."]] [--memory[="..."]] [--timeout[="..."]] [--sleep[="..."]] [--tries[="..."]] [connection] (1). work php artisan queue:work --daemon//次のキュータスクの処理//--queueリスニングされたキュー//--daemonバックグラウンドモードで実行//--delay実行に失敗したタスクに遅延時間を設定(デフォルト:0)//--force強制「メンテナンスモードで」実行//--memoryメモリ制限サイズ、単位MB(デフォルト:128)//--sleepタスクが有効でない場合、スリープに入る秒数を設定(デフォルト:3)//--triesタスクレコードの失敗再試行回数(デフォルト:0)
  • : listen, work, の違い
  • キューのタスク処理に失敗しました
  • 失敗キューを格納データテーブル
  • を生成する.
    php artisan queue:failed-table
    php artisan migrate
    
  • 操作実行エラーのレコードすべてのエラーphp artisan queue:failed実行エラーID 1のレコードphp artisan queue:retry 1実行すべてのエラーphp artisan queue:retry all削除エラーID 4のレコードphp artisan queue:forget failed 4すべてのエラーphp artisan queue:forget flush