1. 程式人生 > >windows下php執行緒安全與非執行緒安全的版本選擇

windows下php執行緒安全與非執行緒安全的版本選擇

Windows下的PHP版本分兩種:執行緒安全版本與非執行緒安全版本。
要論兩者的區別,詳細論說起來比較麻煩,從使用者的角度,記住什麼時候用哪種版本的區別就可以了吧:

1、windows + IIS + FastCGI :使用非執行緒安全版本。

以FastCGI方式安裝PHP時,PHP擁有獨立的程序,並且FastCGI是單一執行緒的,不存在多個執行緒之間可能引發的相互干擾(這種干擾通常都是由於全域性變數和靜態變數導致的)。由於省去了執行緒安全的檢查,因此使用FastCGI方式比ISAPI方式的效率更高一些。

2、windows + IIS + ISAPI :使用執行緒安全版本。

PHP以ISAPI方式安裝時,PHP沒有獨立的程序,而是作為DLL被IIS載入執行的,即是依附於Web伺服器程序的。當Web伺服器執行在多執行緒模式下(IIS正是這種情況),PHP自然也就執行在多執行緒模式下。只要是在多執行緒模式下執行,就可能存線上程安全問題,因此應選擇PHP的執行緒安全版本。

3、windows + Apache + PHP(模組) :使用執行緒安全版本。

如果你要在Apache中以模組方式安裝PHP,則你應該使用PHP的執行緒安全的版本。原因是當PHP作為Apache的模組安裝時,PHP沒有獨立的程序,而是作為模組以DLL的形式被載入到Apache中的,是隨Apache的啟動而啟動的,而Windows下的Apache為多執行緒工作模式,因此PHP自然也就執行在多執行緒模式下。因此,這種情況下應使用PHP的執行緒安全版本。

4、windows + Apache + PHP(ISAPI) :使用執行緒安全版本。

由於以ISAPI方式來安裝PHP時,PHP也沒有獨立的程序,也是作為模組被載入到Apache中的,因此,同樣也需要使用PHP的執行緒安全版本。
一般不建議在Apache中以ISAPI方式來安裝PHP,原因是到目前為止,Apache通過mod_isapi.so模組來實現的ISAPI功能並不完整,並未完整實現微軟對ISAPI所制定的全部規範。

5、windows + Apache + PHP(FastCGI) :使用非執行緒安全版本。

如果你要在Apache中以FastCGI方式使用PHP,則同在IIS中使用FastCGI的PHP的情況一樣,你應該使用PHP的非執行緒安全的版本。原因是在Apache中以FastCGI方式安裝PHP時,PHP擁有獨立的程序,並且FastCGI是單一執行緒的,故應使用PHP的非執行緒安全版本以提高效能。
以上資料總結相關資料,分條明細,供選擇。