首頁  >  文章  >  後端開發  >  php中nts和ts有什麼差別

php中nts和ts有什麼差別

WBOY
WBOY原創
2022-02-21 15:21:153987瀏覽

php中nts和ts的區別:ts表示線程安全,多執行緒存取時採用了加鎖機制,當一個執行緒存取該類別的某個資料時其他執行緒不能同時存取;而nts表示非線程安全,不提供線程存取保護,多個線程可以同時操作相同資料。

php中nts和ts有什麼差別

本文操作環境:Windows10系統、PHP7.1版、Dell G3電腦。

php中nts和ts有什麼差別

在PHP 開發與生產環境建置過程中,需要安裝PHP語言解析器。官方提供了2種類型的版本,線程安全(TS)版和非線程安全(NTS)版,有時後我們開發環境和實際生產的環境有所不同,因此也需要選擇安裝對應的PHP版本。

在此記錄下筆記,方便日後查看…

1、簡介

##TS:

TS(Thread-Safety)即執行緒安全,多執行緒存取時,採用了加鎖機制,當一個執行緒存取該類別的某個資料時進行資料加鎖保護,其他執行緒不能同時進行存取該數據,直到該執行緒讀取完畢,其他執行緒才可存取使用該數據,好處是不會出現資料不一致或資料污染的情況,但耗費的時間比NTS 長。

PHP以 ISAPI 方式(Apache 常用方式)載入的時候選擇TS版本。

NTS:

NTS(None-Thread Safe)即非執行緒安全,不提供資料存取保護,有可能出現多個執行緒先後或同時操作同一數據的情況,容易造成資料錯亂(即髒資料),一般操作的執行時間比TS 短。

PHP以FAST-CGI方式載入運作的時候選擇TNS版,具有更好的效能;

ISAPI:

ISAPI(Internet Server Application Programming Interface), 通常是指被http伺服器所加載,以伺服器的模組形式運行,由微軟提出,故只能在win平台上運行,如win下的apache,iis[用fast cgi 方式工作更穩定] ,而linux上php 則以Apache模組(常用方式)或php-fpm(該方式更適合於NGINX PHP 運行)的方式運作。

CGI:

cgi(Common Gateway Interface):HTTP伺服器與客戶端機器上的程式進行「交談」的一種工具,簡而言之, cig就是一種後台語言,可以與伺服器進行通訊。此時的php是作為一個獨立的程式運行的,特點就是耗費記憶體。

FAST CGI:

fast cgi是一個常駐(long-live)型的CGI,它可以一直執行著,只要啟動後,不會每次都要花費時間去fork一個新進程。這種方式 是與語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在記憶體中並因此獲得較 高的效能。

FAST-CGI 是微軟為了解決 CGI 解釋器的不足而提出改進方案。當一個請求向web server 發送請求時,web server總是會fork一個CGI解釋器進程進行處理這個請求,進程處理完成之後將結果傳回給web server,web server將結果回傳並顯示出來,進程結束,當用戶再次請求同一個頁面時,web server又會fork一個新進程進行請求處理,這樣效率會比較低(CGI被人詬病的主要原因)。而採用FAST-CGI 解釋器的 話,當一個請求執行完畢後不會註銷該進程,而是將改進程進入休眠期,當接收到新的請求時,重新啟用改進程進行處理。 FAST-CGI 較CGI 減少了進程的重複建立的資源佔用。

行程與執行緒:一個行程至少存在一個或多個執行緒。

2、選擇

通常win下 PHP Apache 組合,以 ISAPI 的方式運作。

而linux下通常分為2種:

Apache PHP,PHP一般作為Apache 的模組運作;

Nginx PHP ,以phpfast cgi的方式,即php -fpm的方式運行,該方式對高並發、高負載有良好的性能體現,因此許多網站採用該方式進行環境的搭建。

Nginx 較Apache 的配置少很多,因此人為出錯的機率少一點,但也因此 Apache 的 穩定性要比Nginx 高。

前面廢話了那麼多,下面才是重點…

總結:

以ISAPI 方式運行就用TS 線程安全版

#以FAST- CGI 或PHP-FPM 方式運行就用NTS 非線程安全版

通常Windows 下Apache PHP 選TS ,IIS(fast-cgi) PHP 選TNS

#通常Linux 下Apache PHP 選TS ,Nginx PHP 選TNS

推薦學習:《

PHP影片教學

以上是php中nts和ts有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn