ホームページ >バックエンド開発 >PHPチュートリアル >Laravelキューの詳細
原文 http://huoding.com/2015/07/31/457
私はシンプルさを主張するので、「Laravel」などのいわゆる「重量級」フレームワークはすべて嫌いです。時にはこの憎しみは被害妄想のレベルにまで達し、履歴書に「Laravel に堪能」などと書かれているのを見たら、迷わずその候補者を合格させてしまうほどです。しかし今では、私が「Laravel」が少し好きであることを認めますが、パフォーマンスが依然として避けられない欠点ではありますが、そのパフォーマンスのボトルネックに触れることができる Web サイトがどれだけあるでしょうか。また、この記事で説明したキューなど、その豊富なコンポーネントにより、開発者は実際に多くの時間を節約できます。
Laravel でキュー関数を呼び出すのは非常に簡単です。詳細については、公式ドキュメントを参照してください:
<?php \Queue::pushOn('mail', new \App\Commands\Mail($data)); ?>
キューには、同期、データベース、Redis、Beanstalk などのさまざまなドライバーが含まれています。その中でも、同期は一見奇妙に思えるかもしれませんが、実際には開発やテストの段階では非常に便利です。また、データベース、Redis などのソリューションはどちらかというとシミュレーションに近いため、現時点では Beantalk が最適です。もちろん、nsq などのキューと比較すると、明らかに機能的には劣りますが、Beantalk はシンプルで使いやすいです。
Laravel のキュー コンシューマーには、queue:listen と queue:work という 2 つの方法があります。最初の方法は、非効率であるだけでなく、可能であるため、なぜ存在するのかさえ理解できません。詳細については、「Laravel キューによって発生するアラーム」を参照してください。
queue:work メソッドを選択したら、適切に設定されていないと問題が発生する可能性のあるデフォルト値がいくつかあることに注意する必要があります:
本番環境では、キューが混雑しているかどうかを監視することが見落とされがちですが、Beanstalk を例に挙げると、キューのステータスを簡単にクエリできる stats コマンドが提供されています。 、この出力には多くのコマンドがありますが、どれが輻輳に関連しているかをどのように判断すればよいでしょうか?最も簡単な方法は、人為的にいくつかの輻輳障害を作成し、その前後の結果を比較して違いを見つけることです。私の実験の結果は次のとおりです。 current-jobs -reserved
current-jobs-layed