當前位置:首頁 » 編程語言 » php非線程安全

php非線程安全

發布時間: 2025-06-24 02:51:09

php5 NTS和TS版本的區別,所謂的線程安全和非安全

先從字面意思上理解:

  1. None-Thread Safe就是非線程安全,在執行時不進行線程(thread)安全檢查;

  2. Thread Safe就是線程安全,執行時會進行線程(thread)安全檢查,以防止有新要求就啟動新線程的 CGI 執行方式耗盡系統資源。


再來看PHP的兩種執行方式:

ISAPI和FastCGI。

  1. FastCGI執行方式是以單一線程來執行操作,所以不需要進行線程的安全檢查,除去線程安全檢查的防護反而可以提高執行效率,所以,如果是以 FastCGI(無論搭配 IIS 6 或 IIS 7)執行 PHP ,都建議下載、執行 non-thread safe 的 PHP (PHP 的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip 套件)。

  2. 而線程安全檢查正是為ISAPI方式的PHP准備的,因為有許多php模塊都不是線程安全的,所以需要使用Thread Safe的PHP。

㈡ PHP線程安全與非線程安全的區別:如何選擇用哪一個

首先,Linux下的PHP,沒有線程安全版和非線程安全版之分。從2000年10月20日發布的第一個Windows版的PHP3.0.17開始的都是線程安全的版本,直至5.2.1版本開始有Thread Safe(TS,線程安全)和None Thread Safe(NTS,非線程安全)之分。

因為,Linux/Unix系統採用的是多進程的工作方式,而Windows系統採用多線程的工作方式。即:Linux系統的任務調度基本單位是進程,Windows系統的任務調度基本單位是線程(本觀點來自自學與總結,不能保證百分之百正確)。

所以,在Windows系統的IIS下以CGI方式運行PHP會非常慢,這是由於CGI模式是建立在多進程的基礎之上的,而非多線程,且CGI模式對於每個HTTP請求都需要重新載入和卸載整個PHP環境,其消耗是巨大的。

於是,一般我們會把PHP配置成以ISAPI的方式來運行,ISAPI是多線程的方式,這樣就快多了。但存在一個問題,很多常用的PHP擴展是以 Linux/Unix的多進程思想來開發的,這些擴展在ISAPI的方式運行時就會出錯搞垮IIS。

為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進程重復利用,而不是每一個新的請求就重開一個進程。同時FastCGI也可以允許幾個進程同時執行。這樣既解決了CGI進程模式消耗太大的問題,又利用上了CGI進程模式不存在線程安全問題的優勢。

因此,如果是使用ISAPI的方式來運行PHP就必須用Thread Safe(TS,線程安全)的版本;而用FastCGI模式運行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。

名詞解析:

  • IIS:Internet Information Services (互聯網信息服務),是由微軟公司提供的基於運行Microsoft Windows的互聯網基本服務

  • CGI:Common Gateway Interface (通用網關介面),是外部應用程序(CGI程序)與Web伺服器之間的介面標准

  • ISAPI:Internet Server Application Programming Interface (互聯網應用程序介面),是為Microsoft所提的Internet server的API

  • FastCGI:CGI存在收到每個請求時都開辟一個進程等不足,FastCGI可以理解為是征對CGI的改進版

㈢ php版本選擇問題.VC6和VC9的區別,TS和NTS如何選擇

TS是Thread Safety,代表線程安全,而NTS是None Thread Safe代表非線程安全。


Windows系統下才分線程安全與非線程安全,

windows + Apache + PHP(模塊) :使用線程安全版本。

windows + Apache + PHP(FastCGI) :使用非線程安全版本。


如果你的電腦是32位的, 那裝x86的版本,如果是64位的, 裝x64的版本!

一般來說不區分32位和64位,或者64位操作系統兼容32位的PHP,但是在某些操作系統上還是區分32位和64位的,例如windows 2008


vc6和vc9是指vc運行庫的版本,你PHP版本標志的是VC9,那麼運行的時候,需要安裝vc9

VC9 -是安裝運行使用 Visual Studio 2008 生成的 C++ 應用程序所必需的運行時組件。



這篇教程文章里提供700多個PHP版本下載。(700個PHP版本一鍵切換)
網路搜索這個文章標題:
PHP集成環境如何自定義PHP版本,同時運行多個php版本一鍵開啟模塊。

搜到的文章中,在文章的附件里有提供PHP歷史版本下載,差不多700多個PHP版本,最老和最新版本都包含了。如果你找不到,就找原文吧,因為你搜到的文章可能是被其他網站轉載的。


建議使用PHPWAMP綠色集成環境,700個PHP版本隨意切換,多版本同時運行。

(網路搜PHPWAMP有詳細的使用教程,能同時運行多個PHP版本,一鍵去埠等)

㈣ php的幾個版本的區別

1. VC6與VC9的區別:
VC6版本是使用Visual Studio 6編譯器編譯的,如果你的PHP是用Apache來架設的,那你就選擇VC6版本。

VC9版本是使用Visual Studio 2008編譯器編譯的,如果你的PHP是用IIS來架設的,那你就選擇 VC9版本。

VC9版本是針對IIS伺服器的版本,沒有對APACHE的支持,而VC6版本對IIS和Apache都提供了支持

2.Ts與nts的區別:
Windows版的PHP從版本5.2.1開始有Thread Safe和NoneThread Safe之分。

先從字面意思上理解,Thread Safe是線程安全,執行時會進行線程(Thread)安全檢查,以防止有新要求就啟動新線程的CGI執行方式而耗盡系統資源。Non Thread Safe是非線程安全,在執行時不進行線程(Thread)安全檢查。

3.PHP的兩種執行方式:ISAPI和FastCGI。
ISAPI執行方式是以DLL動態庫的形式使用,可以在被用戶請求後執行,在處理完一個用戶請求後不會馬上消失,所以需要進行線程安全檢查,這樣來提高程序的執行效率,所以如果是以ISAPI來執行PHP,建議選擇ThreadSafe版本;

而FastCGI執行方式是以單一線程來執行操作,所以不需要進行線程的安全檢查,除去線程安全檢查的防護反而可以提高執行效率,所以,如果是以FastCGI來執行PHP,建議選擇NonThread Safe版本。通過phpinfo(); 查看其中的 Thread Safety 項,這個項目就是查看是否是線程安全,如果是:enabled,一般來說應該是ts版,否則是nts版。

㈤ 如何判斷PHP 是線程安全還是非線程安全的

判斷PHP 是線程安全還是非線程安全:
1.通過phpinfo(); 查看其中的 Thread Safety 項,這個項目就是查看是否是線程安全,如果是:enabled,一般來說應該是ts版,否則是nts版。

2.命令行:php -i|grep -i thread
結果:Thread Safety => disabled 【disabled表示非線程安全】
如果沒有grep命令(windows),那就一個個找吧。

熱點內容
xutils上傳多文件 發布:2025-06-24 03:55:21 瀏覽:381
qq密碼修改什麼比較簡單 發布:2025-06-24 03:07:10 瀏覽:974
按鍵精靈什麼是安卓系統 發布:2025-06-24 03:02:22 瀏覽:542
php非線程安全 發布:2025-06-24 02:51:09 瀏覽:68
網頁禁止緩存 發布:2025-06-24 02:15:34 瀏覽:590
電腦配置低如何調apex 發布:2025-06-24 02:05:45 瀏覽:610
python代碼顏色 發布:2025-06-24 01:53:53 瀏覽:90
discuz資料庫查詢 發布:2025-06-24 01:44:43 瀏覽:917
圖案密碼從中間一點開始都有多少 發布:2025-06-24 01:38:20 瀏覽:377
配置最低的手機版吃雞游戲是哪個 發布:2025-06-24 01:24:24 瀏覽:725