這篇文章主要介紹了PHP支不支持多線程,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供松原企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為松原眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
PHP 默認并不支持多線程,要使用多線程需要安裝 pthread 擴展,而要安裝 pthread 擴展,必須使用 --enable-maintainer-zts 參數(shù)重新編譯 PHP,這個參數(shù)是指定編譯 PHP 時使用線程安全方式。
PHP 實現(xiàn)
PHP 實現(xiàn)的線程安全主要是使用 TSRM 機制對 全局變量和靜態(tài)變量進行了隔離,將全局變量和靜態(tài)變量 給每個線程都復(fù)制了一份,各線程使用的都是主線程的一個備份,從而避免了變量沖突,也就不會出現(xiàn)線程安全問題。
PHP 對多線程的封裝保證了線程安全,程序員不用考慮對全局變量加各種鎖來避免讀寫沖突了,同時也減少了出錯的機會,寫出的代碼更加安全。
同時 PHP 開啟線程安全選項后,使用 TSRM 機制分配和使用變量時也會有額外的損耗,所以在不需要多線程的 PHP 環(huán)境中,使用 PHP 的 ZTS (非線程安全) 版本就好。
類和方法
PHP 將線程 封裝成了 Thread 類,線程的創(chuàng)建通過實例化一個線程對象來實現(xiàn),由于類的封裝性,變量的使用只能通過構(gòu)造函數(shù)傳入,而線程運算結(jié)果也需要通過類變量傳出。
實例代碼:
下面是一個線程類,用來請求某一接口。接下來根據(jù)它寫兩個多線程的應(yīng)用實例:
class Request extends Thread { public $url; public $response; public function __construct($url) { $this->url = $url; } public function run() { $this->response = file_get_contents($this->url); } }
感謝你能夠認真閱讀完這篇文章,希望小編分享PHP支不支持多線程內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學(xué)習(xí)!