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 を生成することができる.タスククラス作成
このときapp/jobsディレクトリの下にSendEmailが生成する.php
キューで完了する必要がある操作をhandle()メソッドに書き込みます.タスクをキュー にプッシュは、Controllerにおいてタスク をプッシュすることができる.さらによく使われるのはModel::saved()におけるプッシュタスク です.
メッセージプッシュを実行すると、データベースjobsテーブルに複数のデータが表示されます.キューリスナーを実行する(タスクのキュー実行を実現する)(1).Listen キューのタスク処理に失敗しました 失敗キューを格納データテーブル を生成する.操作実行エラーのレコードすべてのエラー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
Laravelキューサービスは、さまざまなバックグラウンドキューに統一されたAPIを提供し、メールの送信などの時間のかかるタスクの実行を遅らせることができ、Webリクエストの速度を大幅に向上させることができます.
プロファイル
実装手順
php artisan queue:table
php artisan migrate
php artisan make:job SendEmail
このときapp/jobsディレクトリの下にSendEmailが生成する.php
to($this->email);
});
}
}
キューで完了する必要がある操作をhandle()メソッドに書き込みます.
public function queue()
{
//dispatch controller
dispatch(new SendEmail('…………@qq.com'));
}
public function saved(User $user)
{
dispatch(new SendEmail('…………@qq.com'));
}
メッセージプッシュを実行すると、データベースjobsテーブルに複数のデータが表示されます.
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