PHP安裝包TS和NTS的區別
TS指Thread Safety,即執行緒安全,一般在IIS以ISAPI方式載入的時候選擇這個版本。
NTS即None-Thread Safe,一般以fast cgi方式執行的時候選擇這個版本,具有更好的效能。
ts(Thread-Safety)即執行緒安全,多執行緒訪問時,採用了加鎖機制,當一個執行緒訪問該類的某個資料時,進行保護,其他
執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染php以ISAPI方
式載入的時候選擇這個版本.,php以ISAPI方式載入的時候選擇這個版本.
nts(None-Thread Safe)即非執行緒安全,就是不提供資料訪問保護,有可能出現多個執行緒先後更改資料造成所得到的是髒資料php以fast cgi方式執行的時候選擇這個版本,具有更好的效能;
ISAPI(Internet Server Application Programming Interface), 通常是指被http伺服器所載入,以伺服器的模組形式執行,由微 軟提出,故只能在win平臺上執行,例如win下的apache,iis[據說用fast cgi 方式工作更穩定],而linux上php則以 Apache模組或者php-fpm的方式執行。
cgi(Common Gateway Interface):HTTP伺服器與你的或其它機器上的程式進行“交談”的一種工具,說白了,cig就是一種後臺語言,其可以和伺服器之間進行通訊。此時的php是作為一個獨立的程式執行的。特點就是耗費記憶體。
fast cgi.是一個常駐(long-live)型的CGI,它可以一直執行著,只要啟用後,不會每次都要花費時間去fork.這種方式是與語言無關的、可伸縮架構的CGI開放擴充套件,其主要行為是將CGI直譯器程序保持在記憶體中並因此獲得較高的效能。
通常win下php和apache組合,以isapi的方式執行,而linux下可以是apche+php,php常常作為apache的模組,而nginx+php時,phpfast cgi的方式,即php-fpm的方式跑。
據說php-fpm這種方式釋放了web伺服器,使其僅僅處理請求和併發,而php處理則交php-fpm完成,故 nginx+php現在很受青睞,沒測過!
因此:
如果是使用ISAPI的方式來執行PHP就必須用Thread Safe(執行緒安全)的版本;
而用FastCGI模式執行PHP的話就沒有必要用執行緒安全檢查了,用None Thread Safe(NTS,非執行緒安全)的版本能夠更好的提高效率。