Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非
线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。
从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由
于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果
在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。
一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个
问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就
会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都
需要重新加载和卸载整个PHP环境,其消耗是巨大的。
为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重
复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决
了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。
因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用
FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)
的版本能够更好的提高效率。
===========================================
最近重做服务器了, centos5.4 httpd2.2 php5.3, 在ZEND官方也没有找到支持php5.3的ZendOptimizer
暂时先不要换成5.3吧,好多对5.3还没有做到支持,不仅仅是ZendOptimizer
===========================================
shopex使用zend加密的,不安装zend就没办法显示。我是遇到过zend安装几遍都不成功的。然后现在更绝了,php5.3.3已经不支持zend了,所以请求开源。一个好的程序要想发展壮大,最终还是要开源的。
开源吧,PHP5.3.3都不支持zend了;PHP 5.3.x系列改用 Zend Guard Loader 模块了
===========================================
最近在使用shopex网店程序,发现了一个问题,我本想在Linux环境下搭建一个的,结果失败了...
shopex需要Zend的支持,因为Ta没有开源,用ZendOptimizer加密了的,所以我安装了Zend Optimizer,但是了依然不能安装,我就在想这到底是为什么呢?
最后终于找到原因了,Zend Optimizer暂时还不支持PHP5.3。Ubuntu默认安装的就是PHP5.3。所以没有办法安装,需要将PHP的版本降级后才能使用,悲剧啊!
不过也简单,网上有很多降级的办法,搞定就可以了,哈哈!
===========================================
PHP 5.3 下,Zend Optimizer 已经被全新的 Zend Guard Loader 取代
------------------------------------------------
1. 下载 Zend Guard Loader 压缩包。(官方下载地址:http://www.zend.com/en/products/guard/downloads)
2. 解压并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),对应你的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 的官方详细文档。 0 - 不启用混淆
zend_loader.obfuscation_level_support = 3
;从这个路径寻找Zend产品授权的产品许可证。欲了解更多有关如何创建一个许可证文件的信息,请参阅 Zend Guard 用户指南.
zend_loader.license_path =
6. 如果您使用 Zend debugger,请确保加载 Zend guard Loader。
7. 如果您使用 ioncube loader,请务必在它之前加载 Zend guard Loader。
8. 重新启动Web服务器。
=============================================================
Zend Optimizer3.3 优化配置指南
Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司透露使用这个软件某些情况下至少可以提高性能30%以上!这么好的免费大餐当然要用,现在我们来谈谈如何配置这套软件。
Zend Optimizer的安装是傻瓜化的,安装向导会自动根据你的选择来修改php.ini帮助你启动这个引擎。下面我们来介绍下Zend Optimizer的配置选项,帮助你最大化自定义合理的配置。下边是我所用的配置文件,看不懂也不要着急,看完本文你就会完全明白。
[Zend]
zend_optimizer.optimization_level=1023
zend_optimizer.encoder_loader=0
zend_extension_ts="C:Program FilesZendlibZendOptimizer.dll"
现在我们来介绍下上边这个配置文件的含义:
zend_optimizer.optimization_level 《== 优化程度,这里定义启动多少个优化过程。
zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。
zend_extension_ts 《== 优化器所在目录。
优化过程 zend_optimizer.optimization_level 详细解释
这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:
不使用 0 <= 如果这样不如不装,还能节约点内存说!
优化过程1(PASS1) 1
优化过程2(PASS2) 2
优化过程3(PASS3) 4
优化过程4(PASS4) 8
优化过程5(PASS5) 16
优化过程6(PASS6) 32
优化过程7(PASS7) 64
优化过程8(PASS8) 128
优化过程9(PASS9) 256
优化过程10(PASS10) 512
以何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。如我的配置文件中 zend_optimizer.optimization_level = 1023 ,这里的1023是优化过程1到优化过程10全部数字代码(值)相加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值为15,15表示同时开启优化过程1-4。
加密代码支持 zend_optimizer.encoder_loader 详细解释
对于这个参数,我想如果没有看过Zend Opt FAQ文档的朋友大多数并不知道。这个参数用来告诉Zend Optimizer是否去支持被Zend Encoder加密过的代码。默认情况下Zend Opt将支持加密过的代码。如果不使用被加密过的代码我推荐你关闭此选项。这个功能牵扯到解包反码的过程,会导致系统负荷的加重。
这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。
模块定位 zend_extension_ts 无需解释
这是最简单的地方,参数就是Zend Optimizer模块在硬盘上的安装路径。
=================================================
PHP5.3下的安装Zend Optimizer
最近配置新版本的php环境,由于MYSQL和PHP版本都需要更新,服务器上是用的目前最新的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这个产品,换句话说就是ZendOptimizer今后zend官方不更新了。
那就装ZendGuardLoader,但是ZendGuardLoader 5.5只能解Zend Guard 5.5加密的代码,老版本的Zend Guard加密的代码无能无力。如果你要用到zend的产品是用Zend Guard5.5以上的版本加密的,恭喜你直接装ZendGuardLoader即可,但是如果你要用的那产品的开发商还没这么前卫的话,就继续往下读吧。
目前这个年代IIS里用的PHP都是用fastcgi方式了,fastcgi给大家灌输的概念是要用非线程安全(nts)版本的 PHP。如果ZendOptimizer 3.3.3加php 5.2.x的nts版的话,又挂了,因为如果要用ZendOptimizer需要用线程安全的版本。
照目前来说,符合条件的最新的就是 php-5.2.17-Win32-VC6-x86,而它又分msi和zip两个。按照习惯用的msi,但装上后php后页面上fastcgi报错(还未装zend就错),php目录下面放php.ini、windows目录下放php.ini、两个目录下都放php.ini这3中情况都试了都同样的出错……
然后卸载了php的msi安装版,换上了zip版,php目录下面不放php.ini、windows目录下放 php.ini,phpinfo()终于出来了“with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies”
随后另在一台服务器上IIS6+fastcgi的php 5.2.17线程安全zip版装ZendOptimizer同样成功。证明虽然不能说ZendOptimizer在php 5.2.x里只能如此安装,但至少如此安装绝对能配通。
关于ZendOptimize安装,上官方下载ZendGuardLoader-php-5.3-Windows
下载后将相应的ZendLoader.dll文件进行加放到php.ini上即可
详细方法见
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 �C 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.enkj.com】