※CGI版のPHPでしか動作しません。
100万件近いRSSをPHPで取得する必要があったので、マルチスレッド処理を使用してみた。
また、pcntlを組み込んでいないと使用できません。
※下記コンパイルオプション
./configure –prefix=/usr/local/php –enable-cgi –enable-pcntl …
<?php
$maxChild = 10;
$child = 0;
while(1) {
if ($child <= $maxChild) {
$pid = pcntl_fork();
if ($pid == -1) {
exit();
} else if ($pid) {
//親プロセスの処理を書く
//終了させる条件
if () {
break;
}
++$child;
} else {
//子プロセスの処理を書く
exit(0);
}
} else {
$pid = pcntl_waitpid(0, $status, 0);
--$child;
}
}
?>