ホームページ > バックエンド開発 > PHPチュートリアル > phpのpcntl_forkをご存知ですか?

phpのpcntl_forkをご存知ですか?

慕斯
リリース: 2023-04-10 06:32:01
転載
2856 人が閲覧しました

#pcntl_fork() 関数については、php-Functions を参照してください。プロセスの作成に使用される pcntl モジュール内。この記事では、PHP の謎にあなたを導きます。一緒に進みましょう! ! !

phpのpcntl_forkをご存知ですか?pcntl_fork() 関数は、php-pcntl モジュールでプロセスを作成するために使用される関数です。 (Windows はサポート対象外です)

php_pcntl 拡張機能のインストールおよび有効化方法については、ここでは紹介せず、pcntl_fork() 関数自体の解析のみを行います。

$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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート