Windows版的PHP從版本5.2.1開始有Thread Safe(線程安全)和None Thread Safe(NTS,非
線程安全)之分,這兩者不同在于何處?到底應(yīng)該用哪種?這里做一個(gè)簡單的介紹。
從2000年10月20日發(fā)布的第一個(gè)Windows版的PHP3.0.17開始的都是線程安全的版本,這是由
于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式。如果
在IIS下以CGI方式運(yùn)行PHP會非常慢,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程。
一般我們會把PHP配置成以ISAPI的方式來運(yùn)行,ISAPI是多線程的方式,這樣就快多了。但存在一個(gè)
問題,很多常用的PHP擴(kuò)展是以Linux/Unix的多進(jìn)程思想來開發(fā)的,這些擴(kuò)展在ISAPI的方式運(yùn)行時(shí)就
會出錯(cuò)搞垮IIS。因此在IIS下CGI模式才是PHP運(yùn)行的最安全方式,但CGI模式對于每個(gè)HTTP請求都
需要重新加載和卸載整個(gè)PHP環(huán)境,其消耗是巨大的。
為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進(jìn)程重
復(fù)利用而不是每一個(gè)新的請求就重開一個(gè)進(jìn)程。同時(shí)FastCGI也可以允許幾個(gè)進(jìn)程同時(shí)執(zhí)行。這樣既解決
了CGI進(jìn)程模式消耗太大的問題,又利用上了CGI進(jìn)程模式不存在線程安全問題的優(yōu)勢。
因此,如果是使用ISAPI的方式來運(yùn)行PHP就必須用Thread Safe(線程安全)的版本;而用
FastCGI模式運(yùn)行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)
的版本能夠更好的提高效率。
===========================================
最近重做服務(wù)器了, centos5.4 httpd2.2 php5.3, 在ZEND官方也沒有找到支持php5.3的ZendOptimizer
暫時(shí)先不要換成5.3吧,好多對5.3還沒有做到支持,不僅僅是ZendOptimizer
===========================================
shopex使用zend加密的,不安裝zend就沒辦法顯示。我是遇到過zend安裝幾遍都不成功的。然后現(xiàn)在更絕了,php5.3.3已經(jīng)不支持zend了,所以請求開源。一個(gè)好的程序要想發(fā)展壯大,最終還是要開源的。
開源吧,PHP5.3.3都不支持zend了;PHP 5.3.x系列改用 Zend Guard Loader 模塊了
===========================================
最近在使用shopex網(wǎng)店程序,發(fā)現(xiàn)了一個(gè)問題,我本想在Linux環(huán)境下搭建一個(gè)的,結(jié)果失敗了...
shopex需要Zend的支持,因?yàn)門a沒有開源,用ZendOptimizer加密了的,所以我安裝了Zend Optimizer,但是了依然不能安裝,我就在想這到底是為什么呢?
最后終于找到原因了,Zend Optimizer暫時(shí)還不支持PHP5.3。Ubuntu默認(rèn)安裝的就是PHP5.3。所以沒有辦法安裝,需要將PHP的版本降級后才能使用,悲劇!
不過也簡單,網(wǎng)上有很多降級的辦法,搞定就可以了,哈哈!
===========================================
PHP 5.3 下,Zend Optimizer 已經(jīng)被全新的 Zend Guard Loader 取代
------------------------------------------------
1. 下載 Zend Guard Loader 壓縮包。(官方下載地址:http://www.zend.com/en/products/guard/downloads)
2. 解壓并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),對應(yīng)你的PHP版本。
3. 在你的 php.ini 文件添加下面一行,用來加載 Zend Guard Loader:
Linux 和 Mac OS X: zend_extension = 完整路徑/ZendGuardLoader.so
Windows(非線程安全): zend_extension = 完整路徑/ZendLoader.dll
4. 在 php.ini 額外新增一行,啟用 Zend Guard Loader:
zend_loader.enable = 1
5. 可選:可以在 php.ini 文件添加以下行到 Zend Guard Loader 配置位置:
;禁用許可證檢查(為了性能的原因)
zend_loader.disable_licensing = 0
;讓 Zend Guard Loader 支持混淆級別。級別在 Zend Guard 的官方詳細(xì)文檔。 0 - 不啟用混淆
zend_loader.obfuscation_level_support = 3
;從這個(gè)路徑尋找Zend產(chǎn)品授權(quán)的產(chǎn)品許可證。欲了解更多有關(guān)如何創(chuàng)建一個(gè)許可證文件的信息,請參閱 Zend Guard 用戶指南.
zend_loader.license_path =
6. 如果您使用 Zend debugger,請確保加載 Zend guard Loader。
7. 如果您使用 ioncube loader,請務(wù)必在它之前加載 Zend guard Loader。
8. 重新啟動Web服務(wù)器。
=============================================================
Zend Optimizer3.3 優(yōu)化配置指南
Zend Optimizer是由PHP核心引擎“Zend”創(chuàng)建者Zend技術(shù)公司所開的免費(fèi)PHP優(yōu)化軟件。據(jù)Zend公司透露使用這個(gè)軟件某些情況下至少可以提高性能30%以上!這么好的免費(fèi)大餐當(dāng)然要用,現(xiàn)在我們來談?wù)勅绾闻渲眠@套軟件。
Zend Optimizer的安裝是傻瓜化的,安裝向?qū)詣痈鶕?jù)你的選擇來修改php.ini幫助你啟動這個(gè)引擎。下面我們來介紹下Zend Optimizer的配置選項(xiàng),幫助你最大化自定義合理的配置。下邊是我所用的配置文件,看不懂也不要著急,看完本文你就會完全明白。
[Zend]
zend_optimizer.optimization_level=1023
zend_optimizer.encoder_loader=0
zend_extension_ts="C:Program FilesZendlibZendOptimizer.dll"
現(xiàn)在我們來介紹下上邊這個(gè)配置文件的含義:
zend_optimizer.optimization_level 《== 優(yōu)化程度,這里定義啟動多少個(gè)優(yōu)化過程。
zend_optimizer.encoder_loader 《== 是否允許處理由Zend Encoder加密的PHP文件。
zend_extension_ts 《== 優(yōu)化器所在目錄。
優(yōu)化過程 zend_optimizer.optimization_level 詳細(xì)解釋
這里最為重點(diǎn)的部分,仔細(xì)看!Zend Opt總共有10個(gè)優(yōu)化過程,從理論上說開的越多性能越好。當(dāng)然,理論和實(shí)際永遠(yuǎn)都存在著差距。優(yōu)化過程開啟的越多對性能消耗也相對也越大,Zend Opt的10個(gè)優(yōu)化過程并不相同也就是說效果不是平均的。Zend公司定義的最高值(High模式)為15,這里15指的是開啟1-4號優(yōu)化過程。當(dāng)然,很多朋友并不滿足于此,畢竟最高也只開啟4個(gè)優(yōu)化過程連總數(shù)的一半都沒有。各個(gè)優(yōu)化過程的對應(yīng)的數(shù)字代碼(值)如下:
不使用 0 <= 如果這樣不如不裝,還能節(jié)約點(diǎn)內(nèi)存說!
優(yōu)化過程1(PASS1) 1
優(yōu)化過程2(PASS2) 2
優(yōu)化過程3(PASS3) 4
優(yōu)化過程4(PASS4) 8
優(yōu)化過程5(PASS5) 16
優(yōu)化過程6(PASS6) 32
優(yōu)化過程7(PASS7) 64
優(yōu)化過程8(PASS8) 128
優(yōu)化過程9(PASS9) 256
優(yōu)化過程10(PASS10) 512
以何種方式開啟優(yōu)化過程是通過這些數(shù)字代碼(值)相加所得的和作為此參數(shù)的參數(shù)值來控制的。如我的配置文件中 zend_optimizer.optimization_level = 1023 ,這里的1023是優(yōu)化過程1到優(yōu)化過程10全部數(shù)字代碼(值)相加得到的和,表示開啟全部10個(gè)優(yōu)化過程。剛才所提到的Zend公司定義的High模式值為15,15表示同時(shí)開啟優(yōu)化過程1-4。
加密代碼支持 zend_optimizer.encoder_loader 詳細(xì)解釋
對于這個(gè)參數(shù),我想如果沒有看過Zend Opt FAQ文檔的朋友大多數(shù)并不知道。這個(gè)參數(shù)用來告訴Zend Optimizer是否去支持被Zend Encoder加密過的代碼。默認(rèn)情況下Zend Opt將支持加密過的代碼。如果不使用被加密過的代碼我推薦你關(guān)閉此選項(xiàng)。這個(gè)功能牽扯到解包反碼的過程,會導(dǎo)致系統(tǒng)負(fù)荷的加重。
這個(gè)參數(shù)的值只有兩個(gè) 0 關(guān)閉, 1 開啟。默認(rèn)為1,推薦設(shè)置為0。
模塊定位 zend_extension_ts 無需解釋
這是最簡單的地方,參數(shù)就是Zend Optimizer模塊在硬盤上的安裝路徑。
=================================================
PHP5.3下的安裝Zend Optimizer
最近配置新版本的php環(huán)境,由于MYSQL和PHP版本都需要更新,服務(wù)器上是用的目前最新的php 5.3.6,然后去Zend下載的ZendOptimizer的最新版本3.3.3,顯而易見安裝后ZendOptimizer沒加載
原因在于ZendOptimizer 3.3.3只支持php 5.2.x,如果php 5.3.x就需要用ZendGuardLoader 5.5這個(gè)產(chǎn)品,換句話說就是ZendOptimizer今后zend官方不更新了。
那就裝ZendGuardLoader,但是ZendGuardLoader 5.5只能解Zend Guard 5.5加密的代碼,老版本的Zend Guard加密的代碼無能無力。如果你要用到zend的產(chǎn)品是用Zend Guard5.5以上的版本加密的,恭喜你直接裝ZendGuardLoader即可,但是如果你要用的那產(chǎn)品的開發(fā)商還沒這么前衛(wèi)的話,就繼續(xù)往下讀吧。
目前這個(gè)年代IIS里用的PHP都是用fastcgi方式了,fastcgi給大家灌輸?shù)母拍钍且梅蔷程安全(nts)版本的 PHP。如果ZendOptimizer 3.3.3加php 5.2.x的nts版的話,又掛了,因?yàn)槿绻肸endOptimizer需要用線程安全的版本。
照目前來說,符合條件的最新的就是 php-5.2.17-Win32-VC6-x86,而它又分msi和zip兩個(gè)。按照習(xí)慣用的msi,但裝上后php后頁面上fastcgi報(bào)錯(cuò)(還未裝zend就錯(cuò)),php目錄下面放php.ini、windows目錄下放php.ini、兩個(gè)目錄下都放php.ini這3中情況都試了都同樣的出錯(cuò)……
然后卸載了php的msi安裝版,換上了zip版,php目錄下面不放php.ini、windows目錄下放 php.ini,phpinfo()終于出來了“with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies”
隨后另在一臺服務(wù)器上IIS6+fastcgi的php 5.2.17線程安全zip版裝ZendOptimizer同樣成功。證明雖然不能說ZendOptimizer在php 5.2.x里只能如此安裝,但至少如此安裝絕對能配通。
關(guān)于ZendOptimize安裝,上官方下載ZendGuardLoader-php-5.3-Windows
下載后將相應(yīng)的ZendLoader.dll文件進(jìn)行加放到php.ini上即可
詳細(xì)方法見
Zend Guard Loader installation instructions
——————————————-
1. Extract the Zend Loader package.
2. Locate and extract the ZendGuardLoader.so (Linux) or ZendLoader.dll (Windows) that corresponds to your php version.
3. Add the following line to your php.ini file for loading the ZendGuardLoader:
Linux and Mac OS X: zend_extension=<full_path_to_ZendGuardLoader.so>
Windows non-thread safe: zend_extension=<full_path_to_ZendLoader.dll>
4. Add an aditional line to your php.ini for enabling ZendGuardLoader
; Enables loading encoded scripts. The default value is On
zend_loader.enable=1
5. Optional: following lines can be added your php.ini file for ZendGuardLoader configuration:
; Disable license checks (for performance reasons)
zend_loader.disable_licensing=0
; The Obfuscation level supported by Zend Guard Loader. The levels are detailed in the official Zend Guard Documentation. 0 – no obfuscation is enabled
zend_loader.obfuscation_level_support=3
; Path to where licensed Zend products should look for the product license. For more information on how to create a license file, see the Zend Guard User Guide
zend_loader.license_path=
6. If you use Zend debugger as well, please make sure to load it after the Zend guard Loader
7. If you use ioncube loader, please make sure to load it before Zend guard Loader
8. Restart your Web server.
本文出自:億恩科技【www.allwellnessguide.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|