Swoole と Workerman は、高性能のネットワーク通信と同時処理を可能にする 2 つの強力な PHP 拡張機能です。実際の開発では、より効率的な共同処理機能を実現するために、メッセージ キューとリアルタイム コンピューティングを組み合わせる必要がある場合があります。
メッセージ キューは、非同期通信と分離されたデータ処理を実装するために使用される一般的なミドルウェア テクノロジです。リアルタイム コンピューティングとは、データが生成される際のリアルタイムの計算と処理を指します。
この記事では、具体的なコード例を使用して、Swoole と Workerman を使用してメッセージ キューとリアルタイム コンピューティングの協調処理機能を実現する方法を紹介します。
まず、Swoole 拡張機能と Workerman 拡張機能をインストールして構成する必要があります。具体的なインストール手順については、公式ドキュメントを参照してください。
次に、メッセージを送受信するためのメッセージ キューのプロデューサーとコンシューマーを作成する必要があります。
// 生产者 $producer = new SwooleCoroutineChannel(); SwooleCoroutine::create(function () use ($producer) { for ($i = 0; $i < 10; $i++) { $producer->push("Message $i"); usleep(100000); // 模拟数据产生的延迟 } $producer->close(); }); // 消费者 SwooleCoroutine::create(function () use ($producer) { while (true) { if ($producer->isEmpty()) { break; } $message = $producer->pop(); echo "Received message: $message "; // 在这里进行实时计算和处理 } });
上記のコードでは、まずメッセージ キューのコンテナーとして Channel オブジェクトを作成します。次に、プロデューサーのループを使用してメッセージをチャネルにプッシュし、usleep 関数を通じてデータ生成遅延をシミュレートします。次に、コンシューマで無限ループを使用してメッセージを受信し、リアルタイムの計算および処理部分で対応する操作を実行します。
さらに、Workerman を使用して複数プロセスの同時処理を実装することもできます。以下は Workerman の使用例です。
$producer = new WorkermanWorker(); $producer->onWorkerStart = function () use ($producer, &$messageCount) { for ($i = 0; $i < 10; $i++) { $producer->queue->push("Message $i"); usleep(100000); // 模拟数据产生的延迟 $messageCount++; } }; $producer->queue = new WorkermanChannel(); $consumer = new WorkermanWorker(); $consumer->onWorkerStart = function () use ($consumer) { while (true) { $message = $consumer->queue->pop(); echo "Received message: $message "; // 在这里进行实时计算和处理 } }; WorkermanWorker::runAll();
上記のコードでは、最初に 2 つの Worker オブジェクトを作成し、1 つはプロデューサーとして使用され、もう 1 つはコンシューマーとして使用されます。プロデューサの onWorkerStart コールバック関数では、ループを通じてメッセージをキューにプッシュし、usleep 関数を通じてデータ生成遅延をシミュレートします。次に、コンシューマーの onWorkerStart コールバック関数で、ポーリングを通じてキューからメッセージを受信し、対応するリアルタイムの計算と処理を実行します。
上記のコード例を通じて、Swoole と Workerman を使用してメッセージ キューとリアルタイム コンピューティングの協調処理機能を実現する方法を確認できます。このようにして、効率的な非同期通信と同時処理を実現し、アプリケーションのパフォーマンスと柔軟性を向上させることができます。
以上がSwoole と Workerman のメッセージ キューとリアルタイム コンピューティングの協調処理機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。