多数大学生出来选择的工作和专业无关
首页 > 专业知识

让PHP引擎全速运转的三个绝招

时间:2018-09-10 20:33:31 [来源]:郑州PHP培训学校

   让PHP引擎全速运转的三个绝招

  作为流行的 Web 编程语言, PHP 的最大优势就是速度。 PHP已经在这方面做的非常好了,你几乎找不到比它更快的脚本编程语言了。但是如果你的应用负荷很大,而带宽又比较小,或者有其他的瓶颈影响你的服务器性能,那么,你不妨试试笔者为你开出的几个药方,看看是否灵验。
  一、代码优化
  一谈到代码优化,或许你想到的就是整齐明了的代码,但是本文的意思却不是在此,因为如果要寻求速度的话,就要对PHP 源码作相应的调整。一般说来就是去掉多余的注释,让代码不可读。但是这对于一个具有良好素养的程序员来说,简直就是不可思议的。好在Zend Technologies 公司发布了Zend 优化引擎可以帮助你做到这一点。它现在是免费的,但是你必须遵循 Zend Optimizer 许可。这个产品可以对引擎产生的中间代码进行优化。
  安装这个引擎比较简单,下载对应平台的版本以后,解开压缩文件,然后在 php.ini 文件里面加上下面两行,重新启动 Web 服务器,就搞定了。
  zend_optimizer.optimization_level=15
  zend_extension="/path/to/ZendOptimizer.so"zend_loader.enable=Off
  如果是 Win32 平台的应该是:
  zend_optimizer.optimization_level=15
  zend_extension_ts="C:\\path\\to\\ZendOptimizer.dll"zend_loader.enable=Off
  其实第三行是可选的。因为看起来把 zend_loader 关掉能提高一点速度,因此值得把这第三行放到 php.ini 。需要注意的是,关掉的前提条件是你没有在使用 Zend 加密程序。
  二、缓冲
  如果想要更进一步提升速度,我们就需要考虑采用缓冲技术了。有一些可选的解决方案,包括 Zend Cache (测试版本), APC, 以及 Afterburner Cache,另外还有 jpCache 等。
  以上这些都是属于缓冲模块,他们把第一次对 .php 文件请求产生的中间代码存储在 Web 服务器的内存中,然后对以后的请求返回“编译好”的版本。因为这样减少了磁盘读写,而且都在内存工作,所以这个过程能显著提升应用性能,现成的这类产品比较多,到底选择谁呢?
  Zend Cache 是一款不错的商业产品,在第一次加载那些很大的 PHP 页面后,你会明显感受到速度的提升,服务器会留出更多的资源。可惜这个产品是要花银子的,但是在有些情形下,你可不要吝啬这些银子。
  Afterburner Cache 是 Bware Technologies 的产品,目前还处于 Beta 版本,看起来似乎和 Zend Cashe 一样,但是它不能达到 Zend Cache 那样好的效果,也不能和 Zend 优化引擎一起工作,但是它是免费的,所以我采用了这个模块。
  APC (Alternative PHP Cache) 是 Community Connect 发布的又一个免费模块,看起来似乎可以用于生产环境了。
 
  开发老手谈Windows平台的PHP应用开发
  微软在开源界的口碑向来不太好。然而开源的PHP在Windows上却能够十分流畅的运行,这对于一向不待见开源的微软来说是比较少见的。本文作者认为微软对开源的态度正在逐渐转变,而开源界的开发人员也正在逐渐认同微软的诚意。
  Cal Evans,一个在IT界从业26年的开发者,在大量研究了PHP运行在Windows的情况之后,做出了两个令他自己感到吃惊的结论:
  1 只要安装正确,PHP在Windows上运行的十分流畅。
  Cal在VirtualBox上安装Windows Server 08并进行实验。安装方法为使用Web Platform Installer安装PHP,FastCGI,URL Re-writer以及WordPress。虽然没有自带MySQL,不过Cal对运行性能非常满意,尤其是Wordpress运行的很好。(相关阅读:Windows下全新安装Apache2,PHP5,MYSQL5,Zend | Windows下的PHP 5.0安装配制详解)当然Cal也明确的表示在生产线上他还是会选择Linux服务器。毕竟价廉又快捷的开源软件和开源OS在Windows上能够享受的还是有限。不过对于建立在Windows基础设施上的厂商而言,PHP是一个稳定和快捷的选择。
  2 很多开源的开发者排斥微软,仅仅是因为那是微软。
  不过Cal最近在twtpoll上做了一个调查,其中的被调查者中已经有半数就PHP的情况认同了微软的诚意。
  Cal是一个从Windows 1.0时代就开始关注微软的IT从业人员,所以对于微软以及Windows他是十分了解的。比如他对Windows NT Server表示了极大的赞赏,因为那是第一个重要的开放服务器操作系统。Cal认为微软现在对待PHP的良好态度是明智的,而且微软的核心也已经和以前不同,因为正在那里的Sam Ramji,Laruen Cooney,Josh Holms,Drew Robbins以及Joe Stagner等精英分子将逐渐改善微软对待开源的态度。(51CTO编者注:近几年来微软对开源的态度从各方面来看都有所改善。比如前一阵子微软与Tomtom就专利侵权案达成和解一案,Eclipse大会上微软与Eclipse之间的接近举动,之后又先后以微软开源许可发布了ASP.NET MVC源代码以及CCI工具源代码)至少,Windows是PHP应用开发的一个不错的选择。
 
  Zend框架加快PHP走向云端的速度
  Zend Framework1.8扩大了PHP框架以使其适应Amazon的EC2云计算服务。Zend框架还添加了新的应用程序开发功能以加速PHP的开发。
  PHP程序员将可以通过新的方法轻松地将其PHP应用程序与云联系起来,这要归功于开源Zend框架最新版本的出炉。
  Zend Framework1.8扩大了PHP框架以使其适应Amazon的EC2云计算服务。Zend框架还添加了新的应用程序开发功能以加速PHP的开发。
  Zend框架是PHP用以应对.NET,JavaEE和Ruby on Rails开发框架的工具。随着新版本的推出,Zend技术,这一PHP幕后商业资助者,正在大力扩充PHP的竞争力。而这次新版本的推出是继上个月该公司推出Zend Server PHP中间设备之后的又一举措。
  Zend技术创始人兼首席技术官Zeev Suraski说:“Zend 1.8的推出时间再合适不过了,因为不久前我们才推出了Zend Server,这两个工具会相辅相成的。现在我认为我们的用户真正意义上拥有了完整的堆栈。我们的Zend Studio 集成开发环境现在有了Zend Framework的支持,而且Zend Server还会在旁边起到辅助作用,这一切都为PHP的发展提供了良好的开发与部署条件。”
  Zend框架1.8版本的推出是今年以来对于该框架的首次更新。其1.7版本是在去年十一月份推出的,带有Adobe 动作信息格式的支持。
  Suraki解释称1.8版本中快速应用程序开发(RAD)的功能使得开发人员有能力快速地管理和修改应用程序。新的RAD工具有助于开发人员创建新项目和新控件,一般来说,他们可以开发出项目的各种代码骨架。
  Zend 框架中用于快速应用程序开发的新模块被称为Zend_application,它进一步加快了PHP的发展。Zend框架项目领导人Matt Weier O’Phinney透露,在需要自启动应用程序的时候,Zend_application可以有效地帮助程序员进行开发。而在1.8版本出来之前,程序员需要创建一个自启动脚本,在这一自启动脚本中包含了需要注入到框架对象中的各种资源。通过手动来完成这一操作是相当复杂的,而现在Zend_aaplication就可以为自启动程序建立标准化的方式。
  云技术支持
  Zend在推出1.8版本的框架后继而向云技术靠拢,它为Amazon的EC2服务和S3云存储产品都提供了相应支持。
  “在S3中,我们授予了程序员对几乎可无限扩展的Amazon存储服务器的访问权利,”Suraki解释说,“作为EC2的一个类别,我们赋予了程序员管理EC2实例的能力以方便他们创建,终止以及启动这些实例。”
  Suraki补充说,如果没有云技术的支持,程序员们将很难对使用Zend框架的Amazon的云基础设施进行利用。现在他声称,有了Zend框架就可以对Amazon存取进行程序化管理了。
  虽然Zend公司现在支持Amazon云,但是它现在还不能为谷歌的应用引擎提供支持。尽管在过去谷歌通过谷歌数据应用程序接口为Zend框架提供支持。Suraki和O’Phinney同时指出,现阶段还没有任何要求支持谷歌应用引擎的正式提议,不过O’Phinney称已经在这方面进行过一些初步的试验。谷歌推出的应用引擎支持Python语言,且最近已经开始测试其对Java的支持。
  另一个Zend 框架暂不能提供支持的是Oauth验证。Oauth标准现在正被众多网站实施和测试,这些网站都将其视为一种保护Web认证的简单方式。
  O’Phinney称,虽然Zend框架1.8版本还不支持Oauth验证,但是已经有提议要将其纳入进来了。因此在今年晚些时候,也就是1.9版本的框架中,就可以实现对Oauth的支持了。
 

上一篇:PHP整数取余返回负数的相关解决方法

下一篇:使用PHP快速生成Flash 动画