為什麼PHP 5.3不在支援ISAPI,為什麼還要分NTS和TS版本?

來源:互聯網
上載者:User
自PHP 5.3.1版本開始,便已不在支援ISAPI模式,那為什麼在windows下PHP官方仍然發布NTS和TS兩個版本?

回複內容:

自PHP 5.3.1版本開始,便已不在支援ISAPI模式,那為什麼在windows下PHP官方仍然發布NTS和TS兩個版本?

沒有人造嗎?這是要沉的節奏啊!

ISAPI 伺服器擴充是可以被 HTTP 伺服器載入和調用的 DLL。網際網路服務器擴充也稱為 網際網路服務器應用程式
(ISA),用於增強符合 網際網路伺服器 API (ISAPI) 的伺服器的功能。ISA
通過瀏覽器應用程式調用,並且將相似的功能提供給通用閘道介面 (CGI) 應用程式。

php5 non-thread-safe和thread-safe這兩個版本的區別

從PHP5.2.10版本開始(現在有PHP5.2.10和5.3兩個版本),有None-Thread Safe與Thread
Safe兩種版本的可供選擇,這兩種版本有何不同,作為使用者來說又應該如何選擇呢?下面聚友將為您講述。
先從字面意思上理解,None-Thread Safe就是非安全執行緒,在執行時不進行線程(thread)安全檢查;Thread
Safe就是安全執行緒,執行時會進行線程(thread)安全檢查,以防止有新要求就啟動新線程的 CGI 執行方式耗盡系統資源。

再來看PHP的兩種執行方式:ISAPI和FastCGI。FastCGI執行方式是以單一線程來執行操作,所以不需要進行線程的安全檢查,除去安全執行緒檢查的防護反而可以提高執行效率,所以,如果是以
FastCGI(無論搭配 IIS 6 或 IIS 7)執行 PHP ,都建議下載、執行 non-thread safe 的 PHP (PHP
的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip
套件)。而安全執行緒檢查正是為ISAPI方式的PHP準備的,因為有許多php模組都不是安全執行緒的,所以需要使用Thread Safe的PHP。

按照這兩段文字所講解的來解讀的話,確實是不需要TS版本的了。
但一定還是有地方需要TS版,不然乾脆分為ISAPI版和FastCGI版了,而不是TS和NTS。

apache的mod_php是多線程模式,有些命令列的php應用也需要多線程支援。

Linux上的PHP同樣有NTS和TS版本的區別,預設是NTS版本,configure時加上--enable-maintainer-zts則編譯為TS版本.什麼時候需要TS版本呢?比如你要使用pthreads這個多線程的PECL擴充時,或者PHP以MOD_PHP嵌入多線程運行下的Apache,比如Apache在Linux上提供的Event MPM就是一個多進程多線程的工作模型,Windows上Apache採用的WinNT MPM也是一個多執行緒模式,這時都需要TS版本的PHP.

而如果以PHP-FPM(比如搭配Nginx或者Apache的mod_fastcgi)或者PHP-CGI(比如搭配Apache的mod_fcgid或者Win上的IIS)來運行PHP,則一般都不需要TS安全執行緒版本的PHP.

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.