php多任务程序实例解析

本文以实例简单解析了php多任务程序的实现方法,具体代码如下:

<?phperror_reporting(E_ALL);set_time_limit(0);/*** php多任务程序的实现* 借助proc_open* 其实该叫进程(process)* 能启动多进程,你可以使用你的想象力做你想做的了,以后再写个能用的* 如果你是在linux上跑php,并且启用pcntl模块后,使用pcntl函数该更好* */class Thread {  protected $_pref; // process reference  protected static $_instance = null;  protected $_pipes;    private function __construct() {    $this->_pref = 0;  }    public static function getInstance($file) {    if (null == self::$_instance) {      self::$_instance = new self;    }        $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);    return true;  }    public function __destruct() {    proc_close($this->_pref);    $this->_pref = null;  }}// 测试代码$file = __FILE__;if(empty($argv[1])) {  $t2 = Thread::getInstance("$file 1");  $t3 = Thread::getInstance("$file 2");  $t4 = Thread::getInstance("$file 3");  $t5 = Thread::getInstance("$file 4");  $t5 = Thread::getInstance("$file 5");  $t5 = Thread::getInstance("$file 6");  $t2 = Thread::getInstance("$file 7");  $t3 = Thread::getInstance("$file 8");  $t4 = Thread::getInstance("$file 9");  $t5 = Thread::getInstance("$file 10");  $t5 = Thread::getInstance("$file 11");  $t5 = Thread::getInstance("$file 12");  echo "Main thread done/n";} else {  $somecontent = "/r/n//~~~~~~~~~~~~-这次请求序号是:" . $argv[1];  sleep(mt_rand(0, 3));  $handle = fopen($file, 'a+');  fwrite($handle, $somecontent);}

php技术php多任务程序实例解析,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。