php多任务程序实例解析
本文以实例简单解析了php多任务程序的实现方法,具体代码如下:
<?php error_reporting(E_ALL); set_time_limit(0); /** *php多任务程序的实现 *借助proc_open *其实该叫进程(process) *能启动多进程,你可以使用你的想象力做你想做的了,以后再写个能用的 *如果你是在linux上跑php,并且启用pcntl模块后,使用pcntl函数该更好 * */ classThread{ protected$_pref;//processreference protectedstatic$_instance=null; protected$_pipes; privatefunction__construct(){ $this->_pref=0; } publicstaticfunctiongetInstance($file){ if(null==self::$_instance){ self::$_instance=newself; } $descriptor=array( 0=>array("pipe","r"), 1=>array("pipe","w"), 2=>array("file","./error-output.txt","a"), ); self::$_instance->_pref=proc_open("php-q$file",$descriptor,self::$_instance->_pipes); returntrue; } publicfunction__destruct(){ proc_close($this->_pref); $this->_pref=null; } } //测试代码 $file=__FILE__; if(empty($argv[1])){ $t2=Thread::getInstance("$file1"); $t3=Thread::getInstance("$file2"); $t4=Thread::getInstance("$file3"); $t5=Thread::getInstance("$file4"); $t5=Thread::getInstance("$file5"); $t5=Thread::getInstance("$file6"); $t2=Thread::getInstance("$file7"); $t3=Thread::getInstance("$file8"); $t4=Thread::getInstance("$file9"); $t5=Thread::getInstance("$file10"); $t5=Thread::getInstance("$file11"); $t5=Thread::getInstance("$file12"); echo"Mainthreaddone\n"; }else{ $somecontent="\r\n//~~~~~~~~~~~~-这次请求序号是:".$argv[1]; sleep(mt_rand(0,3)); $handle=fopen($file,'a+'); fwrite($handle,$somecontent); }