1,首先,在ubuntu系统中编译pcntl.so,如果找不到pcntl的包,可以创建一个文件夹,下载整个PHP包,在其中找到pcntl包。
然后运行命令:
将编译好的pcntl.so复制到系统php的拓展文件夹下,具体位置看phpinfo中的说明。
例如:
查看phpinfo信息,看是否已加载pcntl。
2,开始pcntl_fork
测试代码如下:
<?php
/**
* php 多进程演示
* edit www.jb200.com
*/
//while(1)//循环采用3个进程
$bWaitFlag = FALSE; // 是否等待进程结束
//$bWaitFlag = TRUE; // 是否等待进程结束
$intNum = 3; // 进程总数
$pids = array(); // 进程PID数组
for($i = 0; $i <$intNum; $i++) {
$pids[$i] = pcntl_fork();// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息
if($pids[$i] == -1) {
echo "couldn't fork". "n";
}elseif(!$pids[$i]) {
sleep(1);
echo "n"."第".$i."个进程 -> " . time(). "n";
//$url=" http://xxx/comments.php?p=".$i;//抓取页面的例子
//$content = file_get_contents($url);
//file_put_contents('message.txt',$content);
//echo "n"."第".$i."个进程 -> " ."抓取页面".$i."-> " . time()."n";
exit(0);//子进程要exit否则会进行递归多进程,父进程不要exit否则终止多进程
}
if ($bWaitFlag) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);echo "wait $i -> " . time() . "n";
}
}
?>
保存为fork.php,然后,在命令行运行:
# php fork.php。