您好,登錄后才能下訂單哦!
php從5.3開始支持多線程pthreads擴展,并同時支持window和linux。
pthreads可以實現多任務同步或異步執行,它提供了創建多線程應用所需的全套工具,默認未安裝。
安裝
window系統下:http://windows.php.net/downloads/pecl/releases/pthreads/
安裝前需要確認PHP版本及安裝位數,可使用phpinfo(); Architecture即是當前安裝位數。官方PHP在5.6及以前版本均為32位(兼容64位),所以PHP5可直接下載32位pthreads擴展。
說明:3.0版本及以上為PHP7專用,3.0版本以下為PHP5專用。
這里以PHP5.5(32位)為例安裝:
選擇2.0.9版本目錄
下載 php_pthreads-2.0.9-5.5-ts-vc11-x86.zip 包并解壓
注意:包名規則中已經包含了pthreads的版本+php版本+底層編譯VC版本,所以下載時可以按這個規則去找。
復制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目錄中。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。