PHP版本很多,包括32位64位以及線程安全與非線程安全在內的php版本多達幾百個,應該如何選擇PHP版本呢
PHP32和64的選擇和區別
32bit的php的整型數據最大最小正負2GB左右(0x7FFFFFFF)
64bit的php的整型數據最大最小正負9百多萬TB左右(0x7FFFFFFFFFFFFFFF)
網站代碼經常需要注意整型數據的極限值。
版本選擇
如果你的PC/服務器是32位的, 那裝x86的版本
如果是64位的, 裝x64的版本
PHP線程安全和非線程安全的選擇和區別。
備注:在PHP5.3以后,PHP不再有ISAPI模式,安裝后也不再有php5isapi.dll這個文件。
Windows版的PHP從版本5.2.1開始有Thread Safe(線程安全)和None Thread Safe(NTS,非線程安全)之分,
Windows下的PHP版本分兩種:線程安全版本與非線程安全版本,線程安全和非線程安全只針對windows,而 linux下沒有這個區分。
那么兩者區別在何處?到底應該用哪種?簡單的介紹來說。
如果是使用ISAPI的方式來運行PHP就必須用Thread Safe(線程安全)的版本;
而用FastCGI模式運行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。
要論兩者的區別,詳細論說起來比較麻煩,從使用者的角度,記住什么時候用哪種版本的區別就可以了。
1、windows + IIS + FastCGI :使用非線程安全版本。
理由:
以FastCGI方式安裝PHP時,PHP擁有獨立的進程,並且FastCGI是單一線程的,不存在多個線程之間可能引發的相互干擾(這種干擾通常都是由於全局變量和靜態變量導致的)。由於省去了線程安全的檢查,因此使用FastCGI方式比ISAPI方式的效率更高一些。
Thread Safe 線程安全
Non Thread Safe 非線程安全 (官方不建議用來進行實際生產)
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的非線程安全版本以提高性能。