教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php中启用多进程的实例详解(ubuntu系统)

php中启用多进程的实例详解(ubuntu系统)

发布时间:2016-06-08   编辑:jiaochengji.com
本文介绍下,在ubuntu系统中,开启php的多进程的方法与实例。有需要的朋友参考下吧。

1,首先,在ubuntu系统中编译pcntl.so,如果找不到pcntl的包,可以创建一个文件夹,下载整个PHP包,在其中找到pcntl包。
然后运行命令:
 

复制代码 代码示例:
mkdir php
cd php
apt-get source php5
cd php5-(WHATEVER_RELEASE)/ext/pcntl
phpize
./configure
 

将编译好的pcntl.so复制到系统php的拓展文件夹下,具体位置看phpinfo中的说明。
例如:
 

复制代码 代码示例:
cp modules/pcntl.so /usr/lib/php5/WHEVER_YOUR_SO_FILES_ARE/
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模块

[关闭]
~ ~