Workerman ネットワーク プログラミングの実践: リアルタイム データ同期システムの構築例
はじめに:
インターネット テクノロジの継続的な開発と応用により、リアルタイム データ同期は重要な要素の 1 つになりました。現在の多くのシステムやアプリケーションの中核となる要件。ネットワーク プログラミングは、リアルタイム データ同期システムを実装する際の重要なテクノロジーです。この記事では、Workerman ネットワーク プログラミング フレームワークを使用して、シンプルで実用的なリアルタイム データ同期システムを構築する方法を紹介し、コード例を示して詳しく説明します。
1. ワーカーマンとは何ですか?
Workerman は、高性能 PHP ネットワーク プログラミング フレームワークであり、PHP の非同期ノンブロッキング イベント駆動型モデルに基づいており、同時実行性の高いネットワーク通信を実現できます。 Workerman は数千の同時接続を処理でき、リアルタイム データ同期システムなどの高性能ネットワーク アプリケーションの構築に最適です。
2. リアルタイム データ同期システムの設計計画
Workerman を使用して、サーバーとクライアントの 2 つの役割からなるシンプルなリアルタイム データ同期システムを構築します。サーバーはクライアントから送信されたメッセージを受信し、接続されているすべてのクライアントにプッシュして、リアルタイムのデータ同期を実現します。
1. サーバー設計:
サーバーは Workerman インスタンスを作成し、指定されたポートをリッスンしてクライアントの接続を待機する必要があります。クライアントが正常に接続すると、サーバーはクライアント接続プールを維持し、受信したメッセージを接続されているすべてのクライアントに送信します。
2. クライアントの設計:
クライアントはサーバーに接続し、独自のメッセージを送信する必要があります。サーバーがメッセージを受信すると、すべてのクライアントにプッシュされます。
3. コード例
以下はサーバーとクライアントのコード例であり、Workerman を使用してリアルタイム データ同期システムを構築する方法を示しています。
サーバー コードの例:
require_once './Workerman/Autoloader.php';
use WorkermanWorker;
/ / 指定されたポートをリッスンし、tcp 送信プロトコルを使用するワーカーを作成します。
$worker = new Worker('tcp://127.0.0.1:2345');
// 4 つのプロセスを開始して、外部サービスを提供します
$worker->count = 4;
//クライアント接続時のコールバック関数
$worker->onConnect = function ($connection) {
echo "New client connected: " . $connection->id . "
";
global $worker; // 向所有客户端推送新连接信息 foreach ($worker->connections as $conn) { $conn->send("New client connected: " . $connection->id); } // 将新连接加入连接池 $worker->connections[$connection->id] = $connection;
};
//クライアント切断時のコールバック関数
$worker->onClose = function ($connection) {
echo "Client disconnected: " . $connection->id . "
";
global $worker; // 向所有客户端推送断开连接信息 foreach ($worker->connections as $conn) { $conn->send("Client disconnected: " . $connection->id); } // 从连接池中移除断开的连接 unset($worker->connections[$connection->id]);
};
//クライアントがメッセージを受信したときのコールバック関数
$worker->onMessage = function ($connection, $data) {
echo "Receive message from client: " . $data . "
";
global $worker; // 向所有客户端推送接收到的消息 foreach ($worker->connections as $conn) { $conn->send("Message from client " . $connection->id . ": " . $data); }
};
// Worker の実行
Worker::runAll();
クライアント コード例:
require_once './Workerman/Autoloader.php';
use WorkermanWorker;
// 指定されたサーバー アドレスとポートに接続するワーカーを作成します
$worker = new Worker('tcp://127.0.0.1:2345');
// サーバーへの接続成功時のコールバック関数
$worker->onConnect = function ($connection) {
echo "Connect to server success
";
$connection->send("Hello, server"); $connection->onMessage = function ($connection, $data) { echo "Receive message from server: " . $data . "
";
}; $connection->onClose = function () { echo "Server connection closed
";
};
};
// ワーカー
を実行Worker::runAll();
4. 実験結果と考察
上記のコード例を通じて、サーバーとクライアントのスクリプトを実行し、それらの間の対話を観察できます。クライアントが正常に接続すると、サーバーと他のクライアントは新しい接続に関する通知を受け取り、クライアントが切断すると、サーバーと他のクライアントも対応する通知を受け取ります。クライアントから送信されたメッセージはサーバーによってすべてのクライアントに転送され、シンプルなリアルタイムのデータ同期が実現します。
概要:
この記事では、Workerman ネットワーク プログラミング フレームワークを使用してリアルタイム データ同期システムを構築する例を紹介します。多数のコード例を通じて、サーバーとクライアントの設計と実装が詳細に説明され、関連する実験と議論が行われます。この記事が、ネットワーク プログラミングを学習および実践している開発者にとって役立つことを願っています。
以上がWorkerman ネットワーク プログラミングの実践: リアルタイム データ同期システムの構築例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。