一:應該知道的: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