ホームページ >バックエンド開発 >PHPの問題 >PHPでマルチプロセスを実装する方法

PHPでマルチプロセスを実装する方法

藏色散人
藏色散人オリジナル
2020-10-22 09:23:083256ブラウズ

php メソッドによるマルチプロセスの実装: 最初に pcntl 拡張機能を有効にし、次に array_chunk 関数を使用して、指定された配列を 500 要素の配列に分割し、次に親プロセスのロジック処理と子プロセスの処理を実行し、最後に待機します。子プロセスを実行するには、それを終了するだけです。

PHPでマルチプロセスを実装する方法

# 推奨: 「

PHP ビデオ チュートリアル

#php マルチプロセス実装

プロセスの実行に時間がかかりすぎる場合は、複数のプロセスを使用してタスクを分解し、プログラムの実行時間を短縮する必要があります。

pcntl は PHP のマルチプロセス拡張であり、pcntl はその略称です。プロセス制御の

pcntl がマルチプロセスをどのように実装するかについて簡単に説明しましょう。

pcntl_fork — 現在のプロセスの現在位置にフォーク (子プロセス) を生成します。注釈: fork は子プロセスを作成します。親プロセスと子プロセスはどちらもフォーク位置から実行を続けます。違いは、親プロセスの実行中、fork の戻り値は子プロセス番号であるのに対し、子プロセスの戻り値は子プロセス番号であることです。プロセスは0を取得します。

例:

$habit_class这个数组有5000条数据,所以先用array_chunk函数把该数组切割为每500个元素一个数组。
$habit_class = array_chunk($habit_class,500,true);
foreach($habit_class as $k2=>$v2){
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} elseif ($pid) {
//这里是父进程逻辑处理,父进程会返回子进程的pid;
} else {// 子进程处理,子进程返回的pid未0;
foreach($v2 as $k=>$v){
    //进行具体业务处理
}
}
exit;// 一定要注意退出子进程,否则pcntl_fork() 会被子进程再fork,带来处理上的影响。
}
}
// 等待子进程执行结束
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
//echo "Child $status completed\n";
}

以上がPHPでマルチプロセスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。