php多任務程式執行個體解析_php技巧

來源:互聯網
上載者:User

本文以執行個體簡單解析了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);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.