当前位置:首页 > PHP教程 > php高级应用 > 列表

php多任务程序实例解析

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-22 14:17:54 浏览: 评论:0 

这篇文章主要介绍了php多任务程序实例,需要的朋友可以参考下,本文以实例简单解析了php多任务程序的实现方法,具体代码如下:

  1. <?php 
  2. error_reporting(E_ALL); 
  3. set_time_limit(0); 
  4. /** 
  5. * php多任务程序的实现 
  6. * 借助proc_open 
  7. * 其实该叫进程(process) 
  8. * 能启动多进程,你可以使用你的想象力做你想做的了,以后再写个能用的 
  9. * 如果你是在linux上跑php,并且启用pcntl模块后,使用pcntl函数该更好 
  10.  
  11. */ 
  12. class Thread { 
  13.   protected $_pref// process reference 
  14.   protected static $_instance = null; 
  15.   protected $_pipes
  16.     
  17.   private function __construct() { 
  18.     $this->_pref = 0; 
  19.   } 
  20.     
  21.   public static function getInstance($file) { 
  22.     if (null == self::$_instance) { 
  23.       self::$_instance = new self; 
  24.     } 
  25.       
  26.     $descriptor = array
  27.     0 => array("pipe""r"), 
  28.     1 => array("pipe""w"), 
  29.     2 => array("file""./error-output.txt""a"), 
  30.     ); 
  31.     self::$_instance->_pref = proc_open("php -q $file"$descriptor, self::$_instance->_pipes); 
  32.     return true; 
  33.   } 
  34.     
  35.   public function __destruct() { 
  36.     proc_close($this->_pref); 
  37.     $this->_pref = null; 
  38.   } 
  39. // 测试代码 
  40. $file = __FILE__
  41. if(emptyempty($argv[1])) { 
  42.   $t2 = Thread::getInstance("$file 1"); 
  43.   $t3 = Thread::getInstance("$file 2"); 
  44.   $t4 = Thread::getInstance("$file 3"); 
  45.   $t5 = Thread::getInstance("$file 4"); 
  46.   $t5 = Thread::getInstance("$file 5"); 
  47.   $t5 = Thread::getInstance("$file 6"); 
  48.   $t2 = Thread::getInstance("$file 7"); 
  49.   $t3 = Thread::getInstance("$file 8"); 
  50.   $t4 = Thread::getInstance("$file 9"); 
  51.   $t5 = Thread::getInstance("$file 10"); 
  52.   $t5 = Thread::getInstance("$file 11"); 
  53.   $t5 = Thread::getInstance("$file 12"); 
  54.   echo "Main thread done\n"
  55. else { 
  56.   $somecontent = "\r\n//~~~~~~~~~~~~-这次请求序号是:" . $argv[1]; 
  57.   sleep(mt_rand(0, 3)); 
  58.   $handle = fopen($file'a+'); 
  59.   fwrite($handle$somecontent); 

Tags: php多任务程序

分享到: