プロセス管理 - プロセスがゾンビ プロセスになるのを防ぐ
プロセスを作成した後、子プロセスをどのように管理しますか?
シグナルを使用して子プロセスを管理するには、通常 2 つの状況があります: (推奨される学習: PHP プログラミングの入門から習熟まで )
posix_kill() : この関数は、名前が示すように、子プロセスにシグナルを送信して子プロセスを操作するものではありません。必要に応じて、子プロセスにプロセス終了シグナルを送信して子プロセスを終了することを選択できます。
pcntl_waitpid(): fork の子プロセスのステータスを待つか返します。この関数が呼び出されたときに指定された子プロセスが終了していた場合 (一般にゾンビ プロセスとして知られています)、この関数はすぐに戻ります子プロセスのすべてのシステム リソースを解放します。これにより、子プロセスがゾンビ プロセスになり、システム リソースの無駄が発生するのを防ぐことができます。
孤立したプロセス: 親プロセスがハングします。子プロセス自体のライフサイクルが終了し、システムがリソースを再利用し、親プロセスが関連するリサイクル操作を実行するまで、子プロセスは pid=1 (wait/waitpid) の init プロセスによって引き継がれます。 ゾンビ プロセス:
子プロセスが終了し、親プロセスが wait/waitpid ステータス、子プロセスによって占有されているプロセス番号、およびその他のリソース記述子を介して子プロセスを取得しないため、害が発生します。たとえば、プロセス番号が制限されており、プロセス番号を解放できないため、将来的に使用可能なプロセス番号がなくなる可能性があります。**親プロセスで使用されます: pcntl_wait または、pcntl_waitpid の目的は、ワーカーがゾンビプロセスにならないようにします。
関数: pcntl_wait() を使用した後、子プロセスが終了した後、親プロセスも停止します**最後に、以下の図を渡します。簡単に見てみましょう。マルチプロセス実装のプロセスを要約して説明します:プロセス管理 - プロセス間通信
キュー: Redis など, 推奨
socket: 推奨パイプライン: 実装が複雑でパイプ(パイプ)がファイル形式で存在し、ハードディスクのIOパフォーマンスのボトルネックがあるSignal: 伝送される情報量は少なく、管理が困難
プロセス管理 - デーモン プロセスへの切り替え
使用および実装
php デッドループ.php &以上がPHP がプロセスを管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。