pcntl_fork() 関数は、現在のプロセスの子プロセスを作成します。そして、最初に親プロセスを実行し、子プロセスの PID を返します。これはゼロより大きい必要があります。親プロセスのコードで、pcntl_fork (&$status) を使用すると、子プロセスが戻り値を取得するまで親プロセスを一時停止できます。注: 親プロセスをブロックすると、子プロセスもブロックされます。ただし、親プロセスの終了は子プロセスの動作には影響しません。
親プロセスの実行が終了したら、子プロセスを実行します。このとき、子プロセスはpcntl_fork()を実行する文(この関数も含む)から実行を開始しますが、この時点では0を返します。 (これは子プロセスであることを意味します)。子プロセスのコード ブロックに exit ステートメントを含めるのが最善です。つまり、子プロセスの実行後すぐに終了します。そうしないと、(ルールを理解することなく) スクリプトの一部の実行が再び開始されます。
要するに、次の 2 つの点に注意してください:
1.不要なエラーを防ぐために、子プロセスに exit; ステートメントを含めるのが最適です。
コードは次のとおりです。 $pid = pcntl_fork(); //ここには他のステートメントを入れないのが最善です
if ($pid == -1) {die( 'フォークできませんでした') ;
} else if ($pid) {
// 私たちは親です
pcntl_wait($status) // ゾンビの子から保護します
} else {
// 私たちは子供です
}