首页 > 开发 > PHP > 正文

php多任务程序实例解析

2024-05-04 22:19:39
字体:
来源:转载
供稿:网友

本文以实例简单解析了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);}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表