php多进程学习

来源:互联网 发布:舞蹈培训网络推广方案 编辑:程序博客网 时间:2024/05/19 15:22

php多进程学习

需要扩展:pcntl库

基础知识:进程运行,多进程并行

 

具体函数可以看参考:http://php.net/manual/zh/book.pcntl.php

 

下面直接给出栗子。

 该栗子纯粹为了用于理解多进程并行而写,cli下运行,仔细研究和分析输出结果。

<?php

$arr = array();

for($i = 0;$i<=1;$i++)

{

 echo $i."\n";

 $pid = pcntl_fork();//当前进程下,创建一个子进程。

 echo getmypid().'_'.$pid.'_'.$i."\n";

 $arr[$i] = $pid;

 if($pid == -1){

   //执行失败返回-1,这里敲对应的交互代码

//do something

 }else if($pid){

   //父进程执行返回子进程id

   //父进程逻辑代码

   //do something

 }else{

   //子进程执行返回0

   //子进程逻辑代码

//do something

    die;   //这里的die很重要,如果不die,部分自进程继续循环会继续创建更多子进程(孙进程)。

  }

}

var_dump($arr);

echo "\n\n";

foreach($arr as $k=>$v)

{

 var_dump(pcntl_waitpid($v,$s,WUNTRACED));//这里是对僵尸进程的回收和销毁

//这里是为了测试部分函数,仅此而已。

 var_dump(pcntl_wifexited($s));

 var_dump(pcntl_wexitstatus($s));

 var_dump(pcntl_wifsignaled($s));

 var_dump(pcntl_wifstopped($s));

}


备注:本文就是为了给自己做下记录,如有不恰当之处,请各路大牛指出,好让后辈们学习。

0 0
原创粉丝点击