php從5.3開始支持多線程pthreads擴展,並同時支持window和linux。php
pthreads能夠實現多任務同步或異步執行,它提供了建立多線程應用所需的全套工具,默認未安裝。mysql
安裝
linux
window系統下:http://windows.php.net/downloads/pecl/releases/pthreads/
git
安裝前須要確認PHP版本及安裝位數,可以使用phpinfo(); Architecture便是當前安裝位數。官方PHP在5.6及之前版本均爲32位(兼容64位),因此PHP5可直接下載32位pthreads擴展。github
說明:3.0版本及以上爲PHP7專用,3.0版本如下爲PHP5專用。
sql
這裏以PHP5.5(32位)爲例安裝:數據庫
選擇2.0.9版本目錄apache
下載 php_pthreads-2.0.9-5.5-ts-vc11-x86.zip 包並解壓windows
注意:包名規則中已經包含了pthreads的版本+php版本+底層編譯VC版本,因此下載時能夠按這個規則去找。bash
複製php_pthreads.dll到PHP擴展目錄中。複製pthreadVC2.dll到PHP安裝根目錄和apache安裝bin目錄下)
打開php.ini配置文件,增長擴展 extension=php_pthreads.dll 保存並退出,重啓服務器
寫代碼測試。
<?php class thread_test extends Thread { public function run() { var_dump($this); } } $thread = new thread_test(); $thread->start();
沒有報錯即安裝成功,若是有報錯提示沒有擴展可先phpinfo();查看下擴展是否安裝或查看配置文件是否修改錯。
linux系統下:http://pecl.php.net/package/pthreads
進入PHP安裝bin目錄下執行命令:
sudo ./pecl install pthread-2.0.9
若是安裝失敗可嘗試安裝低版本,安裝成功後須要修改php.ini文件,增長 extension=pthreads.so ,以開啓pthreads擴展。
測試與window相似。
應用
在官方文檔中已經有詳細的說明,具體的能夠查看文檔中 PHP手冊 >> 函數參考 >> 進程控制擴展 >> pthreads
注意:PHP資源類型( PHP 中不少使用到 Resource 資源類型的擴展或函數並未針對多線程場景進行特殊設計)在多線程中共享會存在不少問題,大部分資源類型沒法共享如數據庫鏈接,文件資源等,只有socket,mysqli 等少許資源類型能夠共享!
不少示例能夠在github上查看:https://www.github.com/krakjoe/pthreads examples目錄中。