ユーザーがすべてのサブスクライバーに電子メールを送信できる、アプリケーションのメール機能を作成しようとしています。問題は、加入者の数によっては、これにかなりの時間がかかる可能性があることです。ユーザーがメッセージを書き込んでサーバーに送信する場所に配置したいと思います。次に、サーバーはhttpリクエストの外部で実行されるタスクを「委任」します。このようにして、「トランザクション」IDをクライアントに送信し、クライアントは定期的にサーバーを「ポーリング」して、電子メールトランザクションの進行状況を確認できます。これを達成するためのいくつかの方法(またはAの方法)は何ですか?
1 に答える
2
メッセージ キューについて説明しています (このコンテキストでは、「メッセージ」と「ジョブ」を同じ意味で使用できます)。実行するジョブに関する情報を含むメッセージをキューにポップすることで機能します。ワーカーは常に新しいメッセージがないかキューをチェックしています。メッセージが見つかると、ワーカはメッセージの所有権を取得してキューから削除し、プログラムされた処理を実行します。
以前はギアマンを使っていました。メッセージキューの基本を示すかなり良い例がいくつかあります。
ジョブには、フォアグラウンドとバックグラウンドの 2 種類があります。
フォアグラウンド ジョブ
フォアグラウンド ジョブは、PHP コードがジョブの完了を待ってから続行するという点でブロックされています。これは、ハードウェアを集中的に使用する処理をワーカー (Web ヘッドとは別のサーバーで実行されている可能性が高い) にオフロードすることを目的としています。
バックグラウンド ジョブ
バックグラウンド ジョブはブロックされません。これらは、キューに送信され、後で処理されると想定されるジョブです。この良い例は、実行に数分かかるクエリによって生成され、準備ができたときにユーザーに電子メールで送信 (または別の方法で送信) されるレポートです。
于 2012-06-18T18:51:52.780 に答える