㈠ 如何判斷php 是線程安全還是非線程安全的
判斷PHP 是線程安全還是非線程安全:
1.通過phpinfo(); 查看其中的 Thread Safety 項,這個項目就是查看是否是線程安全,如果是:enabled,一般來說應該是ts版,否則是nts版。
2.命令行:php -i|grep -i thread
結果:Thread Safety => disabled 【disabled表示非線程安全】
如果沒有grep命令(windows),那就一個個找吧。
㈡ PHP non-thread-safe和thread-safe這兩個版本的區別
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)執行 PHP ,都建議下載執行 non-thread safe 的 PHP (PHP 的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip 套件)。
而線程安全檢查正是為ISAPI方式的PHP准備的,因為有許多php模塊都不是線程安全的,所以需要使用Thread Safe的PHP(搭配apache)。
如果你還搞不清楚,那麼只需知道你是php+apache還是php+iis組合
non-thread-safe 非 線程安全與IIS搭配環境
thread-safe 線程安全 與apache搭配環境
另外php還有VC6 VC9版本區分
VC6和VC9一個支持apache一個支持IIS
VC9用在apache上也沒問題,如果你用iis就必須用vc9的,如果你用apache vc6和vc9都可以用。
㈢ 如何判斷PHP 是ts還是nts版的
通過phpinfo(); 查看其中的 Thread Safety 項,這個項目就是查看是否是線程安全,
如果是:enabled,一般來說應該是ts版,否則是nts版。
㈣ 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線程安全與非線程安全的區別:如何選擇用哪一個
首先,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線程安全和不安全的區別
線程安全租賀清就是多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,拍虛其他線程不能進行訪問直到該線程讀弊前取完,其他線程才可使用。不會出現數據不一致或者數據污染。
線程不安全就是不提供數據訪問保護,有可能出現多個線程先後更改數據造成所得到的數據是臟數據
㈦ php線程安全和不安全的區別
Windows下的PHP版本分兩種:線程安全版本與非線程安全版本。
要論兩者的區別,詳細論說起來比較麻煩,從使用者的角度,記住什麼時候用哪種版本的區別就可以了吧:
1、windows + IIS + FastCGI :使用非線程安全版本。
解釋:
以FastCGI方式安裝PHP時,PHP擁有獨立的進程,並且FastCGI是單一線程的,不存在多個線程之間可能引發的相互干擾(這種干擾通常都是由於全局變數和靜態變數導致的)。由於省去了線程安全的檢查,因此使用FastCGI方式比ISAPI方式的效率更高一些。
2、windows + IIS + ISAPI :使用線程安全版本。
解釋:
PHP以ISAPI方式安裝時,PHP沒有獨立的進程,而是作為DLL被IIS載入運行的,即是依附於Web伺服器進程的。當Web伺服器運行在多線程模式下(IIS正是這種情況),PHP自然也就運行在多線程模式下。只要是在多線程模式下運行,就可能存在線程安全問題,因此應選擇PHP的線程安全版本。
3、windows + Apache + PHP(模塊) :使用線程安全版本。
解釋:
如果你要在Apache中以模塊方式安裝PHP,則你應該使用PHP的線程安全的版本。原因是當PHP作為Apache的模塊安裝時,PHP沒有獨立的進程,而是作為模塊以DLL的形式被載入到Apache中的,是隨Apache的啟動而啟動的,而Windows下的Apache為多線程工作模式,因此PHP自然也就運行在多線程模式下。因此,這種情況下應使用PHP的線程安全版本。
4、windows + Apache + PHP(ISAPI) :使用線程安全版本。
解釋:
由於以ISAPI方式來安裝PHP時,PHP也沒有獨立的進程,也是作為模塊被載入到Apache中的,因此,同樣也需要使用PHP的線程安全版本。
一般不建議在Apache中以ISAPI方式來安裝PHP,原因是到目前為止,Apache通過mod_isapi.so模塊來實現的ISAPI功能並不完整,並未完整實現微軟對ISAPI所制定的全部規范。
5、windows + Apache + PHP(FastCGI) :使用非線程安全版本。
解釋:
如果你要在Apache中以FastCGI方式使用PHP,則同在IIS中使用FastCGI的PHP的情況一樣,你應該使用PHP的非線程安全的版本。原因是在Apache中以FastCGI方式安裝PHP時,PHP擁有獨立的進程,並且FastCGI是單一線程的,故應使用PHP的非線程安全版本以提高性能