popen——php多进程利器

http://blog.csdn.net/leinchu/article/details/8191067
偷笑标题有点儿夸张,

我(们,本来想用们的,还会去掉了)运行系统命令常常用exec,system之类的,

但是今天发现了proc_open和popen,proc_open自称比popen多一些功能,确实,proc_open有很多功能,可以与程序交互,

——但是,他是同步的,就是说一个程序没有运行结束,不能运行下一个!就没办法异步多进程了。

——但,popen是异步的

上代码:

pro.PHP

[php] view plain copy

 print?

  1. <?php  
  2. $process = array();  
  3. for($i=0;$i<5;$i++)  
  4. {  
  5.     echo $i.' opening ... '.chr(10);  
  6.     $process[$i] = popen('php '.dirname(__FILE__).'/run.php''r');  
  7.     sleep(1);  
  8. }  
  9.   
  10. echo 'OK>>'.chr(10);  
  11. sleep(3);  
  12. for($i=0;$i<5;$i++)  
  13. {  
  14.     $read = fread($process[$i], 64);  
  15.     echo $read;  
  16.     pclose($process[$i]);  
  17.     echo $i.' closed'.chr(10);  
  18.     sleep(1);  
  19. }  

run.php

[php] view plain copy

 print?

  1. <?php  
  2. while(1)  
  3. {  
  4.     $echo =getmypid() .'->'date("YmHis").chr(10);  
  5.     echo $echo ;  
  6.     system('echo '.$echo.'> logp');  
  7.     sleep(5);  
  8. }  

执行php pro.php

    A+
发布日期:2017年05月10日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: