❶ 如何判斷php 是線程安全ts還是非線程安全nts版的
可以列印phpinfo();這個函數會告訴你
從字面意思上理解,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。
❷ php5 NTS和TS版本的區別,所謂的線程安全和非安全
先從字面意思上理解:
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。
❸ 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。
❹ 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的非線程安全版本以提高性能。
❺ "nginx下php裝什麼版本及php的線程安全與非線程安全版本的區別
為了兼顧IIS下PHP的效率和安全,微軟 給出了FastCGI的解決方案。FastCGI可以讓PHP的進程重復利用而不是每一個新的請求就重開一個進程。
同時FastCGI也可以允許幾個進程 同時執行。這樣既解決了CGI進程模式消耗太大的問題,又利用上了CGI進程模式不存在線程安全問題的優勢。
❻ 安全線程的PHP5.6版本是否可以配置Zend Guard Loader for PHP 5.6,為什麼配置失敗,快來幫我解決問題
你配置的問題??
我們以php5.6 (
php5.6VC11 x86 Non Thread Safe
)版本為例,說明一下:x86是32位系統的意思,Non Thread Safe是非安全線程,Thread Safe是安全線程。php官網下載地址:http://windows.php.net/download/#php-5.6-nts-VC11-x86
下載好了php5.6 ,自己配置一下php.ini。
接下來,是我們說的重點。首先我們去官網下載,選擇相適用的php版本的ZendGuard ,我們這里是php5.6版本,所以要下載適用它的ZendGuard版本。ZendGuard的官方下載地址:http://www.zend.com/en/procts/loader/downloads#Windows
我們這里是下載基windows系統的ZendGuard ,(如果你系統是linux,你就下載linux的ZendGuard)
解壓並提取 ZendLoader.dll(Windows系統)或ZendGuardLoader.so(Linux),對應你的PHP版本。
下載了Zend Guard Loader
for PHP 5.6,解壓文件後復制ZendLoader.dll到php安裝路徑的ext目錄中,
在php.ini配置加入:
[Zend.loader]
zend_extension="C:/php/ext/ZendLoader.dll"
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
總結一下:
【Linux 和 Mac OS X環境下】
zend_extension="/usr/lib/php/moles/ZendGuardLoader.so"(替換成自己的ZendGuardLoader.so路徑)
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
重新啟動Web伺服器。
【Windows(非線程安全的php版本)】
zend_extension="c:/php/ext/ZendLoader.dll"(替換成自己的ZendGuardLoader.dll路徑)
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
重新啟動Web伺服器。
測試:新建文本文檔,填寫下面內容:<?phpphpinfo();?>保存,然後更改文件名為phpinfo.php放到你域名根目錄,然後通過你的域名+phpinfo.php瀏覽查看,有查看到ZendGuard 就說明安裝成功,否則就安裝失敗。
或者:打開windows的「運行」輸入cmd,切換路徑到你php安裝目錄,執行php -v 回車。假如:你的php安裝在e盤的php文件 ,命令如下:①cd E:/php 回車。②E: 回車 進到你想要的路徑下。③php -v 回車有查看到有載入zendloader 就說明安裝成功,否則就安裝失敗。
安裝ZendGuard失敗原因如下:①你安裝了低於php5.3的版本②不支持64位的php,只支持32位的
③Windows下,Zend Loader only works with NTS PHP!
ZendGuard只支持NTS(Non Thread Safe)版的php,TS(Thread Safe安全線程)版的不支持。
如何判斷:
通過phpinfo(); 查看其中的 Thread Safety 項,這個項目就是查看是否是線程安全,如果是:enabled,一般來說應該是ts版,否則是nts版。
按住ctrl+f快捷鍵,輸入Thread Safety ,查看裡面屬性是不是enabled。
附上NTS和TS的區別
NTS:Non Thread Safe
非安全線程, 在執行時不進行線程(Thread)安全檢查。
TS:Thread Safe
安全線程, 執行時會進行線程(Thread)安全檢查,以防止有新要求就啟動新線程的CGI執行方式而耗盡系統資源。
注意事項
ZendGuard只適用非線程安全版本的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線程安全版和非線程安全版應該用哪個
Apache伺服器就用非線程安全的 IIS就用線程安全的
❿ Nginx下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版本的區別與用法詳解-http://www.leixuesong.cn/259