PHP開啟多線程擴充

來源:互聯網
上載者:User

標籤:php   多線程   pthreads   

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

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


安裝

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

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/8D/92/wKioL1iifiuSqZIpAAUcjb9pxvg744.jpg" title="QQ20170214114826.jpg" alt="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版本目錄

    650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8D/94/wKiom1iif0mA7Pz6AATZcO-lTcc312.jpg" title="QQ20170214114826.jpg" alt="wKiom1iif0mA7Pz6AATZcO-lTcc312.jpg" />

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

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

    650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/8D/95/wKiom1iiiOfyX3KbAAPXJypeZdw408.jpg" title="QQ20170214114826.jpg" alt="wKiom1iiiOfyX3KbAAPXJypeZdw408.jpg" />

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

  4. 開啟php.ini設定檔,增加擴充 extension=php_pthreads.dll 儲存並退出,重啟伺服器

  5. 寫代碼測試。

<?phpclass thread_test extends Thread {    public function run() {        var_dump($this);    }}$thread = new thread_test();$thread->start();

沒有報錯即安裝成功,如果有報錯提示沒有擴充可先phpinfo();查看下擴充是否安裝或查看設定檔是否修改錯。



linux系統下:http://pecl.php.net/package/pthreads

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/8D/95/wKiom1iijqqjJAkuAAmmz8pKTIU159.jpg" title="QQ20170214114826.jpg" alt="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目錄中。

本文出自 “秋風掃落葉” 部落格,請務必保留此出處http://php2012web.blog.51cto.com/5585213/1897614

PHP開啟多線程擴充

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.