ホームページ  >  記事  >  バックエンド開発  >  PHP pcntl マルチプロセスの使用例_PHP チュートリアル

PHP pcntl マルチプロセスの使用例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:02:16641ブラウズ

PHPのpcntlマルチプロセスの使用例

この記事は主にPHPのpcntlマルチプロセスの使用法を紹介しており、必要な友人は非常に参考になります。それ

この記事の例では、PHP の pcntl マルチプロセスの使用法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

PHP は、PCNTL 一連の関数を使用して、複数のプロセスでトランザクションを処理することもできます。例えば、データベースから80万件のデータを取得して、その後の一連の処理を行う必要があるのですが、このとき、単一のプロセスで処理すればよいのでしょうか。来年の今日まで待ってください。したがって、pcntl関数を使用する必要があります。

20 個のプロセスを開始し、1 ~ 80w のデータを 20 の部分に分割するとします。メイン プロセスは、すべての子プロセスが終了するまで待ってから終了します。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

$max = 800000;

$労働者 = 20;

$pids = array();

for($i = 0; $i $pids[$i] = pcntl_fork();

スイッチ ($pids[$i]) {

ケース-1:

echo "フォークエラー: {$i} rn";

終了;

ケース0:

$param = 配列(

'lastid' => $max / $workers * $i,

'maxid' => $max / $workers * ($i+1),

);

$this->executeWorker($input, $output, $param);

終了;

デフォルト:

休憩;

}

}

foreach ($pids as $i => $pid) {

if($pid) {

pcntl_waitpid($pid, $status);

}

}

ここで、pcntl_forkが出てくると、このpid値が子プロセスでは0、親プロセスでは子プロセス(>0)のpidが-1ということになります。フォークが間違ってしまいました。

$pids 配列を使用して、メインプロセスを終了する前にすべてのプロセスが完了するまで待機させます

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

http://www.bkjia.com/PHPjc/970755.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/970755.html技術記事 PHP の pcntl マルチプロセスの使用例 この記事では、主に PHP の pcntl マルチプロセスの使用法を紹介します。これは、必要な方にとって非常に有益です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。