ホームページ >PHPフレームワーク >Workerman >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 サイトの他の関連記事を参照してください。