手機版 | wap版 | 網站主頁 | HOME | 3G網頁
<button id="mfnrt"><acronym id="mfnrt"></acronym></button>

<dd id="mfnrt"></dd>
<button id="mfnrt"></button>
      1. <progress id="mfnrt"></progress>
        <tbody id="mfnrt"><track id="mfnrt"></track></tbody>
        <em id="mfnrt"><tr id="mfnrt"></tr></em>
        位置:首頁 >> 幫助 >> 基本教程 >> 詳情

        PHP TS 和 NTS 版本選擇

        發布日期:2019/11/1 8:29:14 訪問次數:622

        在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方式載入運行的時候選擇NTS版,具有更好的性能;
        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 選NTS
        通常Linux 下 Apache + PHP 選TS,Nginx + PHP 選NTS

        <button id="mfnrt"><acronym id="mfnrt"></acronym></button>

        <dd id="mfnrt"></dd>
        <button id="mfnrt"></button>
            1. <progress id="mfnrt"></progress>
              <tbody id="mfnrt"><track id="mfnrt"></track></tbody>
              <em id="mfnrt"><tr id="mfnrt"></tr></em>