ホームページ >PHPフレームワーク >Workerman >Workerman を使用して同時実行性の高いネットワーク プログラミングを実装する方法

Workerman を使用して同時実行性の高いネットワーク プログラミングを実装する方法

PHPz
PHPzオリジナル
2023-11-07 09:05:181025ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。