pcntl_fork() 関数は、php-pcntl モジュールでプロセスを作成するために使用される関数です。 (Windows はサポート対象外です)
$one = 123;$one++;$two = time();$pid = [];$pid = pcntl_fork();$three = time();
pcntl_fork()関数が実行されると、子プロセスが作成されます。子プロセスは、現在のプロセス、つまり親プロセスに関するデータ、コード、状態をすべてコピーします。
1. pcntl_fork() が子プロセスの作成に成功すると、子プロセス番号が親プロセスに返され、子プロセスに 0 が返され、失敗した場合は -1 が返されます2 .子プロセスは親プロセスのコードとデータをコピーします。つまり、子プロセスと親プロセスが所有するコードとデータはまったく同じになります。
3.
重要なポイント: 子プロセスは親プロセスのステータスをコピーします。次に、上記のサンプル コードがあります。 5 行目, pcntl_forkが実行されると、作成したサブプロセスのコードも5行目から実行されます。 子プロセスがデータとコードをコピーしました。したがって、子プロセスにも同じものが存在します: $one、$two、およびその他の変数
for ($i = 0; $i < 3; $i++) { $pid = pcntl_fork();}sleep(30);
那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)
理由: 親プロセスは にあります
私
=
0
時間
、
作成する
確立する
外
1つ
個人の
息子
入力
手順
0
、
これ
時間
の
息子
入力
手順
、
戻る
ミーティング
継続
続き
わかりました
循環
指輪
。
作成する
確立する
外
属
で
以来
もっている
の
息子
入力
手順
。
同じ
理由
:
i=0 の場合、子プロセス 0 が作成され、このとき子プロセスがループを実行し続けます。独自の子プロセスを作成します。同じ理由:
i##= 0 いつ、作成ビルド出力一子子成成0,これ の 息子 が Cheng に入ると、 は ## に戻ります#会ContinueContinue実行行ループループ ###。 Createbuildout所属 自自#子成成。 と同じ: これは、i=1... の場合にも発生します。 推奨される学習: 「PHP ビデオ チュートリアル
以上がphpのpcntl_forkをご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。