Linux下实现PHP多进程的方法分享
前端之家收集整理的这篇文章主要介绍了
Linux下实现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多进程的简单测试代码:
<div class="codetitle"><a style="CURSOR: pointer" data="60197" class="copybut" id="copybut60197" onclick="doCopy('code60197')"> 代码如下:
<div class="codebody" id="code60197">
<?
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");
?>