第18章 性能.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第18章 性能

很enhig 第章 - 性能 如果你希望你的网站能够吸引很多人,优化网站性能将是在开发阶段的一个主要要素。令人安心的是symfony核心开发者总会非常关注性能问题。 通过加速开发带来好处的同时也会带来一些多余的开销,symfony核心开发者总是会认识到性能的需求。因此,每一个类每一个方法都会仔细的分析并优化到尽可能的快速。基本的开销,可以通过比较使用和不使用symfony来显示hello, world时间来测量个很小。因此,这个框架可扩展并能在压力测试下表现的好。最好的证据是,一些高访问量的网站(有百万活跃用户的有大量消耗服务器资源的Ajax交互的)使用symfony并且非常满意它的性能。在wiki上可以看一下这用symfony开发的网站列表(/trac/wiki/ApplicationsDevelopedWithSymfony)。 不过,很显然高访问量的站点通常扩展服务器数量并升级到他们想要的硬件。如果你没有足够的资源做到这一点,或者如果想确保框架的全部力量都在你的掌握中,你可以使用几个调整来进一步加快你的symfony应用程序。本章列出了一些在框架所有层次中和多高级用户的推荐优化性能方法。它们中的一些在以前的章节中已经提过,但是你会觉得把它们都集中在一起会对你十分有帮助。 调整服务器 一个精心优化的应用程序应该放在一个优化良好的服务器上。你应该了解服务器性能的基础知识,以确保symfony运行没有瓶颈。这里有几样东西需要查核,以确保你的服务器不会过于缓慢。 在php.ini中设置magic_quotes_gpc为on会降低应用程序效率,因为这会让PHP把请求参数中的所有引用都转义,但symfony会在后来系统化的过程中还原它们,这样唯一的后果就是时间上的损失--并会在一些平台上带来引用-转义问题。因此,如果能修改PHP配置的话,设置这个参数为off。 PHP版本越新越好。PHP5.2比PHP5.1快,PHP5.1比PHP5.0快。所以请升级你的PHP来获得最新的性能提升。 在生产服务器上使用PHP加速器(例如APC, XCache或者eAccelerator)几乎是必须的,因为它能让PHP跑的比平均快50%。安装其中一个加速器扩展来感觉一下PHP的真实速度。 此外,在生产服务器上确认关闭了debug程序,例如Xdebug或者APD扩展。 NOTE 你也许会mod_rewrite扩展的开销:这是可以忽略的。确实,通过重写规则来读取一张图片比不通过重写规则来读取慢,但是放慢的量级低于执行任何的php语句。 一些symfony开发者喜欢使用syck,这是一个YAML分析器,PHP的一个扩展,它可以替代symfony的内部分析器。这确实比较快,但symfony的缓存系统已经让YAML分析的开销最小化了,所以使用syck不会给已有生产环境带来什么益处。你小心syck不是成熟,用的时候也许会发生错误。不管怎么说,如果你感兴趣,安装这个扩展(/syck/), symfony会自动使用它的。 TIP 当一台服务器不够用的时候,你增加其他服务器来负载均衡。只要uploads/目录是共享的并且使用了数据库存储用户会话,symfony项目会无缝的嵌入负载均衡架构。 调整模型 在ymfony中,模型层是公认最慢的部分。 如果通过基准程序测试发现需要优化模型层,这里有一些可能的改进方法。 优化Propel整合 初始化模型层(核心Porpel类)会花一些时间,因为它需要去载入一些类并构造多个对象。无论如何,因为symfony整合了Propel,所以这些初始化任务只会在动作确实需要模型的时候才会发生,并且会尽量晚发生。Propel类只会在当生成的模型对象自动载入的时候才会被初始化。这就意味不使用模型的页面不会被模型层所累。 如果你的应用程序完全不需要使用模型层,你也能在settings.yml中设置关闭所有的层并保存在sfDatabaseManager的初始化值中: all: .settings: use_database: off 生成的模型类(在lib/model/om/)已经被优化过了他们不包含注释,并且他们从自动载入机制中获益。依靠自动载入替代手动包含文件意味着类会在确实需要的时候才会被载入。因此在不需要模型类的情况下,有自动载入机制会节省执行时间,使用include语法来实现则不会节省时间。 对于注释,他们注解了生成的方法,但是会使模型文件变大结果会导致轻微的磁盘读取开销。因为生成的方法名

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档