快速业务通道

深度探讨 PHP 之性能

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23
定的变量、函数,在PHP中需要在动态运行中确 定,也就决定了PHP中间码不能直接运行而需要运行在Zend Engine上。

  说到PHP变量的具体实现,又不得不说一个东西了:Hashtable。Hashtable可以说在PHP灵魂之一,在PHP内部广泛用到,包含变量符号栈、函数符号栈等等都是基于hashtable的。

  以PHP变量为例来说明下PHP的动态运行特点,比如说代码:

  

  $var = “hello, blog.xiuwz.com”;

  ?>

  该代码的执行结果就是在变量符号栈(是一个hashtable)中新增一个项

  

大话PHP之性能

 

  当要使用到该变量时候,就去变量符合栈中去查找(也就是变量调用对出了一个hash查找的过程)。

  同样对于函数调用也基本上类似有一个函数符号栈(hashtable)。

  其实关于动态运行的变量查找特点,在PHP的运行机制中也能看出一些。PHP代码通过解释、编译后的流程下图:

  

大话PHP之性能

 

  图3 PHP运行实例

  从上图可以看出,PHP代码在compile之后,产出的了类符号表、函数符号表、和OPCODE。在真正执行的时候,zend Engine会根据op code去对应的符号表中进行查找,处理。

  从某种程度上,在这种问题的上,很难找到解决方案。因为这是由于PHP语言的动态特性所决定的。但是在国内外也有不少的人在寻找解决方案。因为通过这样,能够从根本上完全的优化PHP。典型的列子有facebook的hiphop(https://github.com/facebook/hiphop-php)。

  2.6结论

  从上面分析来看,在基础的内存管理、变量、函数、运行机制方面,PHP本身并不会存在明显的性能差异,但由于PHP的动态运行特性,决定了PHP和 其他的编译型语言相比,所有的变量查找、函数运行等等都会多一些hash查找的CPU开销和额外的内存开销,至于这种开销具体有多大,可以通过后续的基准 性能和对比分析得出。

  因此,也可以大体看出PHP不太适合的一些场景:大量计算性任务、大数据量的运算、内存要求很严格的应用场景。如果要实现这些功能,也建议通过扩展的方式实现,然后再提供钩子函数给PHP调用。这样可以减低内部计算的变量、函数等系列开销。

  3.基准性能

  对于PHP基准性能,目前缺少标准的数据。大多数同学都存在感性的认识,有人认为800QPS就是PHP的极限了。此外,对于框架的性能和框架对性能的影响很没有响应的权威数字。

  本章节的目的是给出一个基准的参考性能指标,通过数据给大家一个直观的了解。

  具体的基准性能有以下几个方面:

  1.裸PHP性能。完成基本的功能。

  2.裸框架的性能。只做最简单的路由分发,只走通核心功能。

  3.标准模块的基准性能。所谓标准模块的基准性能,是指一个具有完整服务模块功能的基准性能。

  3.1环境说明

  测试环境:

  Uname -a

  Linux db-forum-test17.db01.baidu.com 2.6.9_5-7-0-0 #1 SMP Wed Aug 12 17:35:51 CST 2009 x86_64 x86_64 x86_64 GNU/Linux

  Red Hat Enterprise Linux AS release 4 (Nahant Update 3)

  8 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz

  软件相关:

  Nginx:

  nginx version: nginx/0.8.54 built by gcc 3.4.5 20051201 (Red Hat 3.4.5-2)

  Php5:(采用php-fpm)

  PHP 5.2.8 (cli) (built: Mar 6 2011 17:16:18)

  Copyright (c) 1997-2008 The PHP Group

  Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

  with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

  bingo2:

  PHP框架。

  其他说明:

  目标机器的部署方式:

大话PHP之性能

脚本。

 

  测试压力机器和目标

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号