ホームページ >PHPフレームワーク >Workerman >Workermanを使用してシンプルなTCPサーバーを作成するにはどうすればよいですか?

Workermanを使用してシンプルなTCPサーバーを作成するにはどうすればよいですか?

百草
百草オリジナル
2025-03-11 14:58:17627ブラウズ

Workermanを使用してシンプルなTCPサーバーを作成する方法

Workermanを使用してシンプルなTCPサーバーを作成するのは簡単です。まず、Workermanがインストールされていることを確認してください。通常、作曲家を介してインストールできます: Composerは、Workerman/workerman を必要とします。次に、新しいPHPファイル(例: server.php )を作成します。次のコードは、ポート2345に耳を傾ける基本的なTCPサーバーを確立します。 '/vendor/autoload.php'; Workerman \ Workerを使用してください。 $ worker = new Worker(" tcp://0.0.0.0:2345"); $ worker-> onconnect = function($ connection){echo" {$ connection-> getRemoteip()}からの新しい接続}:{$ connection-> getRemotePort()} \ n&quot ;; }; $ worker-> onmessage = function($ connection、$ data){//データをクライアントに戻します$ connection-> send($ data); }; $ worker-> onclose = function($ connection){echo" connectionクローズ:{$ connection-> getRemoteip()}:{$ connection-> getRemotePort()} \ n&quot ;; };ワーカー:: ranall();

このコードは、 workerman \ worker クラスを使用してTCPワーカーを作成します。 tcp://0.0.0.0:2345 リスニングアドレスとポートを指定します。 onconnect onmessage 、および onclose コールバックは、それぞれ接続イベント、着信データ、および接続クロージャーを処理します。 worker :: runall()はサーバーを起動します。 php Server.php 。マルチプロセスまたはマルチスレッドモデル(構成によって異なります)を使用して、多数の同時接続を効率的に管理します。この同時処理の鍵は、ワークマンのイベント主導のアーキテクチャにあります。接続が届くか、データが受信されると、Workermanは、他の接続をブロックせずに対応するコールバック( onconnect 、<code> onmessage など)をトリガーします。これにより、パフォーマンスの劣化なしに多くのクライアントを処理できます。処理できる同時接続の数は、サーバーのリソース(CPU、メモリ、ネットワーク帯域幅)によって異なります。 Workermanの構成オプションを使用して、特定のニーズに合わせてワーカープロセスの数を調整できます。これらは通常、ワーカーオブジェクト内で設定されます。いくつかの基本的な設定を次に示します。

  • worker-&gt; count ワーカープロセスの数を指定します。この数を増やすと、より多くのクライアントでパフォーマンスが向上する可能性がありますが、プロセスが多すぎるとシステムが過負荷になります。通常、デフォルトは1です。
  • worker-&gt; name ログと監視のより良い識別のためにワーカーに名前を割り当てます。一部のシナリオでは有用ですが、慎重に検討する必要があります。
  • worker-&gt; Transport トランスポート層プロトコル( 'TCP'、 'udp')を指定します。デフォルトは 'tcp'。
  • worker-&gt; ssl SSL/TLS暗号化を有効にします。 SSL証明書の構成が必要です。

server.php ファイル内でこれらの設定を直接変更できます。例:

 <code class="php"> $ worker = new Worker(&quot; tcp://0.0.0.0:2345&quot;); $ worker-&gt; count = 4; // 4ワーカープロセスを使用$ worker-&gt; name =&quot; mytcpserver&quot ;; ?サーバーは、<code> $ data </code> <code> onmessage </code>関数のパラメーターを介してデータを受信します。クライアントにデータを送信するには、<code> $ connection-&gt; send()</code>メソッドを使用します。必要に応じてこのデータを処理できます。例: <pre class="brush:php;toolbar:false"> <code class="php"> $ worker-&gt; onmessage = function($ connection、$ data){$ receiveddata = trim($ data); //リーディング/トレーリングホワイトスペースエコー&quot; receed:&quot; 。 $ receivedata。 &quot; \ n&quot ;; //受信したデータを処理... $ response =&quot;サーバー受信:&quot; 。 $ receiveData; $ connection-&gt; send($ response); }; </code> 

データの送信:

クライアントにデータを送信するには、 $ connection-> $ connection-&gt; send()

メソッド: <code code="php"> $ worker-&gt; connection = conness、$ connections&gt; $ connection&gt;サーバー!&quot;); }; </code> 

コールバック内で潜在的なエラー(接続障害など)を適切に処理することを忘れないでください。これにより、Workerman TCPサーバー内でデータを送信および受信するための基本的なフレームワークが提供されます。より複雑なデータ処理には、シリアル化または他のデータ構造化手法が含まれる場合があります。

以上がWorkermanを使用してシンプルなTCPサーバーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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