php キューとはどういう意味ですか?それはどのように達成されるのでしょうか?応用シナリオは何ですか?以下では、mysql を使用してデカップリングを実現し、redis を使用してトラフィックを削減することを通して、PHP メッセージ キューの実装原理を詳細に説明します。
キューの概念:
1. キュー構造のミドルウェアです。
2. メッセージが入力された後、すぐに処理する必要はありません
3,サブスクライバ / コンシューマによって順番に処理されます
キュー原則:
はデカップリングの原則でもあります。ビジネス システムとキュー処理システムは何の関係もありません 1 つは書き込み (ビジネス システム)、もう 1 つは読み取り (キュー管理システム) です。 #ただ
をキューに書き込んでくださいWrite、他には何も気にしないでください。読み終わるかどうかは関係ありません同様に、
キューアウトから を読み取って、仕事が来たらそれを行い、仕事がないときは休むアプリケーション シナリオ:
冗長性: キューに永続的に保存されます
、その後、注文処理プログラムによって取得されます。処理が完了すると、レコードは削除されます。デカップリング: はい、デカップリング これら 2 つのシステム(ビジネスとキューの処理)は私たちが普段行っていることです。キューに入るシステムとキューから出るシステムの間には直接の関係はありません。一方のシステムに障害が発生しても、もう一方のシステムは影響を受けません
中央にキューがあるためトラフィックが減少します。エッジ: フラッシュ セールとラッシュ セール。トラフィックが急激に増加しました。 キャッシュのあるメッセージ キューを使用します (制限を下回っています。たとえば、許可されるのは 10 個のみで、10 個がキューに格納されると、それらは格納されなくなります)フラッシュセールが来るとプロンプトが表示されます)
非同期通信: メッセージ自体がキューに入れられたシステムを 直接返すことができるため、プログラムの非同期動作が実現されていると言われます
シナリオの拡張性:
現在は受注システムと財務システムしかありませんが、将来的には物流システムを追加したいです。物流システムをサブスクライブさせるだけですこのキューに直接接続しますソート保証: 一部のシナリオ たとえば、
銀行データの処理順序は非常に重要です。シングルスレッド、シングル入力、シングル出力のシステムにすることができます実装媒体:
1. mysql の使用: 高信頼性、簡単#2. Redis の使用: 高速、単一の大きなメッセージ パッケージ 効率が低い #3. よりプロフェッショナルなサードパーティのクラス ライブラリを使用: 高度にプロフェッショナル、信頼性が高く、高品質学習コスト。
メッセージ処理トリガー メカニズム:
1. 無限ループ読み取り: 実装は簡単ですが、障害が発生した場合は時間内に応答できません (短期間に適しています)フラッシュセールなど
)2. スケジュールされたタスク: 圧力は均等に分散され、処理の上限があります (キューの前のシステムのピーク値がどれほど不安定であっても、キューの背後にあるシステムは引き続き定期的に実行します
)#注: タイミングが重要です。前のスケジュールされたタスクが完了する前に、次のスケジュールされたタスクを開始しないでください
ケース: 注文システム、注文する 注文情報をキューに書き込むと、すぐに注文が正常に行われたことが返されます。配信システムは数分ごとにキューを読み取ります定期的に、注文を要約します
3. デーモンプロセス: php-fpm や cgi と同様、シェルの基本が必要です (このプロセスを使用して、キューにコンテンツがあります。コンテンツがある場合は、処理のためにデキュー システムを開始します)
mysql を使用してデカップリング ケースを実装します:
デカップリングを行う理由: アーキテクチャが統合されている場合。注文システムには大きな負荷がかかっており、物流情報をすぐに返す必要はありません。注文が崩壊すると、物流も崩壊するため、
##注文システムはキューにコードを書き込みます:
#流通システムはキュー コードを読み取ります:
スケジュールされたタスクの実行Crontab -e
注: このログ ファイルは自分で作成する必要があります。
1. からアクセスします。ブラウザ order.phpAdd order
2. データベースに移動して結果を確認し、ログインで結果を確認します。 shell ( 実行は成功しませんでした。おそらくこの sh ファイルは特定のディレクトリに配置する必要があります。レビューが完了したら実行します)
アイデア:
1. フラッシュ セール プログラムが redis への書き込みを要求します
2. redis に格納されているデータの長さを確認し、上限を超えている場合は、直接破棄されます (フラッシュセールの最後に戻ります)
3. 無限ループ処理と redis への保存 データはデータベースにマージされます
テーブル設計:
ブラウザから user.php
atshell に直接アクセスするには、php -f savetodb.php を使用します。
データベースに移動して表示します関連する推奨事項:以上がPHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。