PHP開啓多線程擴展

php從5.3開始支持多線程pthreads擴展,並同時支持window和linux。

pthreads可以實現多任務同步或異步執行,它提供了創建多線程應用所需的全套工具,默認未安裝。


安裝

window系統下http://windows.php.net/downloads/pecl/releases/pthreads/

wKioL1iifiuSqZIpAAUcjb9pxvg744.jpg

安裝前需要確認PHP版本及安裝位數,可使用phpinfo();  Architecture即是當前安裝位數。官方PHP在5.6及以前版本均爲32位(兼容64位),所以PHP5可直接下載32位pthreads擴展。

說明:3.0版本及以上爲PHP7專用,3.0版本以下爲PHP5專用。

這裏以PHP5.5(32位)爲例安裝:

  1. 選擇2.0.9版本目錄

    wKiom1iif0mA7Pz6AATZcO-lTcc312.jpg

  2. 下載 php_pthreads-2.0.9-5.5-ts-vc11-x86.zip 包並解壓

    注意:包名規則中已經包含了pthreads的版本+php版本+底層編譯VC版本,所以下載時可以按這個規則去找。

    wKiom1iiiOfyX3KbAAPXJypeZdw408.jpg

  3. 複製php_pthreads.dll到PHP擴展目錄中。複製pthreadVC2.dll到PHP安裝根目錄和apache安裝bin目錄下)

  4. 打開php.ini配置文件,增加擴展 extension=php_pthreads.dll 保存並退出,重啓服務器

  5. 寫代碼測試。

<?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

wKiom1iijqqjJAkuAAmmz8pKTIU159.jpg

進入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目錄中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章