php模擬多線程

一:應該知道的:php

php自己是不支持多線, 可是php的好搭檔,apache和linux是支持的,故lamp纔是最佳組合,還在使用win服務器的如今知道爲何要用linux吧。既然是模擬的, 就不是真正的多線程. 其實只是多進程.
html

 

二:實現方法:linux

一、藉助shell腳本實現多線程web

 

<?php
  for ($i=0;$i<10;$i++) {
  echo $i;
  sleep(10);
  }
?>
注意:這裏爲了讓腳本執行時間更長,方便看效果,sleep一下

shell腳本以下:shell

 

#!/bin/bash
  for i in 1 2 3 4 5 6 7 8 9 10
  do
  /usr/bin/php -q /var/www/html/test.php &
done

 

    注意到在請求php代碼的那行有一個&符號嗎,這個是關鍵,不加的話是不能進行多線程的,&表示講服務推送到後臺執行,所以,在shell的每次的循環中沒必要等php的代碼所有執行完在請求下一個文件,而是同時進行的,這樣就實現了多線程,下面運行下shell看下效果,這裏你將看到10個test.php進程再跑,再利用linux的定時器,定時請求這個shell,在處理一些須要多線程的任務。apache

二、利用apache的多進線程特性(例如:能夠同時讓多人一塊兒訪問,若是不支持,則必須一個一個訪問bash

 

注意:pcntl_fork,proc_open,popen 都是利用多httd的多線程來模擬多線程的。(參考:http://blog.51yip.com/php/992.html)服務器

參考: php實現多線程(實際是多進程,跨平臺) http://blog.csdn.net/phphot/article/details/1906928多線程

 

三、PHP 真正多線程的使用spa

http://www.oschina.net/question/264729_138585

相關文章
相關標籤/搜索