ネットワーク アプリケーションの継続的な開(kāi)発に伴い、同時(shí)実行性の高いネットワーク プログラミングは、今日のネットワーク アプリケーション開(kāi)発における重要なテクノロジの 1 つになっています。 Workerman は、PHP をベースにした高性能ネットワーク通信フレームワークで、完全なネットワーク プログラミング ソリューションを提供し、同時(shí)実行性の高いネットワーク プログラミングをより簡(jiǎn)単に実裝できるようにします。
この記事では、Workerman を使用して同時(shí)実行性の高いネットワーク プログラミングを?qū)g裝する方法を、いくつかの具體的なコード例を通じて紹介します。
1. Workerman のインストール
Workerman はサードパーティの拡張機(jī)能パッケージであり、composer を通じてインストールする必要があります。ターミナルに次のコマンドを入力します。
composer require workerman/workerman
インストールが完了すると、プロジェクトのルート ディレクトリに追加のベンダー ディレクトリが作成され、そこには Workerman 関連のファイルが含まれます。
2. 単純な TCP サーバーの作成
シンプルな TCP サーバーを作成し、クライアントのリンク リクエストを監(jiān)視し、クライアントから送信されたデータをクライアントに返しましょう。まず、プロジェクトのルート ディレクトリに次の內(nèi)容の 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 コールバック関數(shù)が呼び出され、接続が成功したことを示すメッセージが出力されます。クライアントがメッセージを送信すると、サーバーは onMessage コールバック関數(shù)を呼び出し、クライアントから送信されたデータをそのままの狀態(tài)でクライアントに返します。クライアントが切斷されると、サーバーは onClose コールバック関數(shù)を呼び出し、切斷メッセージを出力します。最後に、Worker::runAll() 関數(shù)を呼び出してサーバーを起動(dòng)します。
3. サーバーを起動(dòng)します
ターミナルでプロジェクトのルート ディレクトリを入力し、次のコマンドを入力してサーバーを起動(dòng)します:
php server.php start
起動(dòng)後、次のプロンプト メッセージが表示されます。表示:
Workerman[2022]: Worker starting... Workerman[2022]: Worker started.
は、サーバーが正常に起動(dòng)したことを示します。
4. サーバーをテストする
telnet コマンドを使用して、サーバーの通常の動(dòng)作をテストできます。ターミナルに次のコマンドを入力します。
telnet 127.0.0.1 8080
接続が成功したら、コンテンツを入力すると、サーバーは入力されたコンテンツをそのまま返します。切斷したい場(chǎng)合は、Ctrl ] を押して終了し、Telnet クライアントを終了します。
5. マルチプロセス モードを使用する
接続數(shù)が多くなると、シングルプロセス モードでは需要に対応できなくなります。この時(shí)點(diǎn)では、マルチプロセス モードを使用できます。高い同時(shí)処理を?qū)g現(xiàn)します。以下は、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; という行を追加しました。これは、クライアント リクエストを同時(shí)に処理するために 4 つのプロセスを開(kāi)くことを意味します。 。また、各プロセスの開(kāi)始時(shí)にメッセージを出力する新しい onWorkerStart コールバック関數(shù)も追加しました。
6. UDP プロトコルの使用
Workerman を使用すると、ネットワーク プログラミングに UDP プロトコルを簡(jiǎn)単に使用することもできます。以下は 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 コールバック関數(shù)にそのまま殘します。クライアントに。
概要
この記事では、Workerman を使用して同時(shí)実行性の高いネットワーク プログラミングを?qū)g裝する方法を、具體的なコード例を通じて紹介します。シンプルな TCP サーバーからマルチプロセス モード、UDP プロトコルに至るまで、Workerman は完全なネットワーク プログラミング ソリューションを提供し、同時(shí)実行性の高いネットワーク プログラミングの実裝を容易にします。
以上がWorkerman を使用して同時(shí)実行性の高いネットワーク プログラミングを?qū)g裝する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)