# 推奨: 「php メソッドによるマルチプロセスの実装: 最初に pcntl 拡張機能を有効にし、次に array_chunk 関数を使用して、指定された配列を 500 要素の配列に分割し、次に親プロセスのロジック処理と子プロセスの処理を実行し、最後に待機します。子プロセスを実行するには、それを終了するだけです。
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 サイトの他の関連記事を参照してください。