Linux下实现PHP多进程的方法分享

yipeiwu_com5年前PHP代码库
PHP多进程:使用PHP的Process Control Functions(PCNTL/线程控制函数)
函数参考可见:http://www.php.net/manual/zh/ref.pcntl.php
只能用在Unix Like OS,Windows不可用。
编译php的时候,需要加上–enable-pcntl,且推荐仅仅在CLI模式运行,不要在WEB服务器环境运行。

以下为实现PHP多进程的简单测试代码:
复制代码 代码如下:

<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待进程结束
$intNum = 10; /// 进程总数
$pids = array(); /// 进程PID数组

echo ("Start\n");

for($i = 0; $i < $intNum; $i++) {

$pids[$i] = pcntl_fork();/// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息

if(!$pids[$i]) {
// 子进程进程代码段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str \n";
exit();
// 子进程进程代码段_End
}

}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "\n";
}
}
echo ("End\n");
?>

相关文章

PHP下通过系统信号量加锁方式获取递增序列ID

在网上搜了搜,有两个办法但都不太好:一个是简单的以进程ID+时间戳,或进程ID+随机数来产生近似的唯一ID,虽简单但对于追求“完美”的我不愿这样凑合,再说Apache2以后进程会维持相当...

老生常谈文本文件和二进制文件的区别

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数567...

php 删除数组元素

如果没有提供 callback 函数,array_filter() 将删除 input 中所有等值为 FALSE 的条目。 删除数组中为空值的元素就可以使用这个函数。 复制代码 代码如下...

php递归法读取目录及文件的方法

本文实例讲述了php递归法读取目录及文件的方法。分享给大家供大家参考。具体如下: 这里实例分析php递归法读取目录及文件的方法,代码中包含较为详尽的注释,如下所示: <?...

phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法

比较简洁的方法:新建一个目录将phpmyadmin中的文件复制到这个目录中,iis中设置一下路径。 安装好PHPmyAdmin后,在IE里访问时会出现下面的这种错误: Warning:...