この記事は、PHPSocket プログラミングにおけるマルチプロセス エコー サーバーについて詳しく (写真とテキストで) 紹介します。一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。
最後の echo サービス プログラムには大きな欠点があります。つまり、同時に 1 つのクライアントにしか接続できないということですが、これは明らかに不合理です。
そこで、今回はマルチプロセスアプローチを使用して、複数のクライアントに同時にサービスを提供します。
最終的な効果は次のとおりです:
(作成したワーカー プロセスは ps コマンドで表示できます)
##(xshell を介して複数のターミナルを開き、複数のクライアントをサービス プログラムに接続します)
int pcntl_fork ( void )
pcntl_fork関数を実行すると、子プロセスも同時にコピーされます。コンテキストが親プロセスの実行環境の場合、戻り値は子プロセスのプロセス番号です。子プロセスの実行環境の場合は0を返します。したがって、次の if プログラム構造では、両方の分岐が実行されます。 子プロセスには以前と同じロジックがあり、クライアントからのメッセージの受信とクライアントへの送信を同時に行うために使用されます。 最後から 2 番目の行は、pcntl_waitpid 関数を呼び出します。この関数を説明する前に、まずゾンビ プロセスとは何かを理解しましょう。 通常の状況では、子プロセスは親プロセスを通じて作成されます。プロセスは独立したメモリ構造であるため、親プロセスは子プロセスの実行ステータスを知りません。子プロセスがタスクを完了した後、それ自体で終了することはできません。このとき、親プロセスは、子プロセスをリサイクルするためにオペレーティング システムを通じて子プロセスのステータスを取得する必要があります。そうしないと、子プロセスがガベージ リソース、つまりゾンビ プロセスになってしまいます。 以下はこの関数の関数プロトタイプです:
int pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] )
サーバーサイド PHP マルチプロセス プログラミングの実践
サーバーサイド PHP マルチプロセス プログラミングpractice_PHP チュートリアル
以上がPHPSocketプログラミングにおけるマルチプロセスエコーサーバーの詳細な紹介(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。