php中启用多进程的实例详解(ubuntu系统)
1,首先,在ubuntu系统中编译pcntl.so,如果找不到pcntl的包,可以创建一个文件夹,下载整个PHP包,在其中找到pcntl包。
然后运行命令:
cd php
apt-get source php5
cd php5-(WHATEVER_RELEASE)/ext/pcntl
phpize
./configure
将编译好的pcntl.so复制到系统php的拓展文件夹下,具体位置看phpinfo中的说明。
例如:
echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini
查看phpinfo信息,看是否已加载pcntl。
2,开始pcntl_fork
测试代码如下:
<?php
/**
* php 多进程演示
* edit www.jbxue.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。
您可能感兴趣的文章:
php教程之多进程实例(3)
修复Ubuntu引导菜单的方法
php中启用多进程的实例详解(ubuntu系统)
如何在Ubuntu 18.04和16.04上安装PHP(7.3,7.2和7.0)?
如何在Ubuntu中安装不同的PHP(5.6,7.0和7.1)版本?
如何通过PPA在Ubuntu上安装PHP7
php教程之多进程实例(2)
解决:Ubuntu mysql 不能远程连接的问题
ubuntu隐藏index.php的方法
如何在Ubuntu上启用和禁用PHP模块