ホームページ > 記事 > PHPフレームワーク > Workerman を使用して同時実行性の高いネットワーク プログラミングを実装する方法
ネットワーク アプリケーションの継続的な開発に伴い、同時実行性の高いネットワーク プログラミングは、今日のネットワーク アプリケーション開発における重要なテクノロジの 1 つになっています。 Workerman は、PHP をベースにした高性能ネットワーク通信フレームワークで、完全なネットワーク プログラミング ソリューションを提供し、同時実行性の高いネットワーク プログラミングをより簡単に実装できるようにします。
この記事では、Workerman を使用して同時実行性の高いネットワーク プログラミングを実装する方法を、いくつかの具体的なコード例を通じて紹介します。
1. Workerman のインストール
Workerman はサードパーティの拡張機能パッケージであり、composer を通じてインストールする必要があります。ターミナルに次のコマンドを入力します。
composer require workerman/workerman
インストールが完了すると、プロジェクトのルート ディレクトリに追加のベンダー ディレクトリが作成され、そこには Workerman 関連のファイルが含まれます。
2. 単純な TCP サーバーの作成
シンプルな TCP サーバーを作成し、クライアントのリンク リクエストを監視し、クライアントから送信されたデータをクライアントに返しましょう。まず、プロジェクトのルート ディレクトリに次の内容の server.php ファイルを作成します。
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $server = new Worker('tcp://0.0.0.0:8080'); $server->onConnect = function($connection) { echo "New client connected "; }; $server->onMessage = function($connection, $data) { $connection->send($data); }; $server->onClose = function($connection) { echo "Client closed connection "; }; Worker::runAll();
上記のコードでは、クライアント接続リクエストをリッスンするための新しい Worker オブジェクトを作成しました。クライアントがサーバーに接続すると、onConnect コールバック関数が呼び出され、接続が成功したことを示すメッセージが出力されます。クライアントがメッセージを送信すると、サーバーは onMessage コールバック関数を呼び出し、クライアントから送信されたデータをそのままの状態でクライアントに返します。クライアントが切断されると、サーバーは onClose コールバック関数を呼び出し、切断メッセージを出力します。最後に、Worker::runAll() 関数を呼び出してサーバーを起動します。
3. サーバーを起動します
ターミナルでプロジェクトのルート ディレクトリを入力し、次のコマンドを入力してサーバーを起動します:
php server.php start
起動後、次のプロンプト メッセージが表示されます。表示:
Workerman[2022]: Worker starting... Workerman[2022]: Worker started.
は、サーバーが正常に起動したことを示します。
4. サーバーをテストする
telnet コマンドを使用して、サーバーの通常の動作をテストできます。ターミナルに次のコマンドを入力します。
telnet 127.0.0.1 8080
接続が成功したら、コンテンツを入力すると、サーバーは入力されたコンテンツをそのまま返します。切断したい場合は、Ctrl ] を押して終了し、Telnet クライアントを終了します。
5. マルチプロセス モードを使用する
接続数が多くなると、シングルプロセス モードでは需要に対応できなくなります。この時点では、マルチプロセス モードを使用できます。高い同時処理を実現します。以下は、Workerman のマルチプロセス モードを使用するサンプル コードです:
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker('tcp://0.0.0.0:8080'); $worker->count = 4; $worker->onWorkerStart = function($worker) { echo "Worker #" . $worker->id . " started "; }; $worker->onConnect = function($connection) { echo "New client connected "; }; $worker->onMessage = function($connection, $data) { $connection->send($data); }; $worker->onClose = function($connection) { echo "Client closed connection "; }; Worker::runAll();
上記のコードでは、$worker->count = 4; という行を追加しました。これは、クライアント リクエストを同時に処理するために 4 つのプロセスを開くことを意味します。 。また、各プロセスの開始時にメッセージを出力する新しい onWorkerStart コールバック関数も追加しました。
6. UDP プロトコルの使用
Workerman を使用すると、ネットワーク プログラミングに UDP プロトコルを簡単に使用することもできます。以下は UDP サーバーのサンプル コードです:
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker('udp://0.0.0.0:8080'); $worker->onMessage = function($connection, $data) { $connection->send($data); }; Worker::runAll();
このうち、udp://0.0.0.0:8080 を使用して UDP サーバーを作成し、受信したデータを onMessage コールバック関数にそのまま残します。クライアントに。
概要
この記事では、Workerman を使用して同時実行性の高いネットワーク プログラミングを実装する方法を、具体的なコード例を通じて紹介します。シンプルな TCP サーバーからマルチプロセス モード、UDP プロトコルに至るまで、Workerman は完全なネットワーク プログラミング ソリューションを提供し、同時実行性の高いネットワーク プログラミングの実装を容易にします。
以上がWorkerman を使用して同時実行性の高いネットワーク プログラミングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。