Swooleを使用してシンプルなUDPサーバーを作成するには、次の手順に従うことができます。
composer require swoole/ide-helper
、サーバーにSwooleを直接インストールするために必要です。udp_server.php
。このファイルでは、サーバーを定義します。サーバーの構成を定義します。Swoole Swoole\Server
クラスを使用して、UDPサーバーを初期化します。これが基本的な例です。
<code class="php"><?php $server = new Swoole\Server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);</code></code>
イベントハンドラーの追加:サーバーが開始されたときやパケットを受信したときなど、イベントにハンドラーを追加できます。最小限のセットアップは次のとおりです。
<code class="php">$server->on('Packet', function ($server, $data, $clientInfo) { $server->sendto($clientInfo['address'], $clientInfo['port'], "Server: " . $data); }); $server->on('Start', function ($server) { echo "Swoole UDP Server is started at " . $server->host . ":" . $server->port . "\n"; }); $server->start();</code>
php udp_server.php
など、コマンドラインを使用してPHPスクリプトを実行します。 UDPサーバーが実行され、UDPパケットを受信して応答する準備ができている必要があります。Swoole UDPサーバーの場合、パフォーマンスと動作を最適化するためにいくつかの重要な構成を設定できます。
new Swoole\Server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
。SWOOLE_PROCESS
またはSWOOLE_BASE
モードで実行できます。 SWOOLE_PROCESS
複数のプロセスを使用し、高い並行性環境に適していますが、 SWOOLE_BASE
1つのプロセスを使用し、軽量ですがスケーラブルではありません。SWOOLE_SOCK_UDP
指定する必要があります。ワーカーの設定: worker_num
やtask_worker_num
などの設定を使用して、ワーカープロセスまたはスレッドの数を構成できます。例えば:
<code class="php">$server->set(array( 'worker_num' => 4, 'task_worker_num' => 4 ));</code>
バッファー設定:UDPには接続がないため、 package_max_length
のようなバッファサイズの管理が大きなパケットを処理するために重要です。
<code class="php">$server->set(array( 'package_max_length' => 1024 * 1024 * 2 // 2MB ));</code>
Swooleサーバーで着信UDPパケットを処理するには、イベントリスナーをPacket
イベントに添付する必要があります。これがあなたがそれを行う方法です:
パケットイベントハンドラーを定義します。サーバースクリプトで、 on
メソッドを使用して、 Packet
イベントに関数をバインドします。
<code class="php">$server->on('Packet', function ($server, $data, $clientInfo) { // Your logic to handle the packet echo "Received data: {$data} from {$clientInfo['address']}:{$clientInfo['port']}\n"; // Respond to the client $server->sendto($clientInfo['address'], $clientInfo['port'], "Server: " . $data); });</code>
Swoole UDPサーバーが期待どおりに機能していない場合は、これらのトラブルシューティング手順に従ってください。
netstat -tuln
やss -tuln
などのコマンドを使用して、現在開いているポートを確認します。テスト接続: nc
(NetCat)などのツールを使用して、テストパケットをサーバーに送信します。
<code class="bash">echo "Hello" | nc -u <server_ip> <server_port></server_port></server_ip></code>
サーバーがパケットを正しく受信して処理するかどうかを確認します。
php -m | grep swoole
で確認できますphp -m | grep swoole
。これらの手順を体系的に進めることにより、Swoole UDPサーバーでほとんどの問題を診断して修正できるはずです。
以上がSwooleを使用してシンプルなUDPサーバーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。