使用Zend Framework进行高负载项目

时间:2010-09-23 11:21:42

标签: php zend-framework

Zend Framework是一个很好的框架,但速度不是很快。 您是否可以判断是否值得使用Zend Framework进行高负载项目,例如,电子邮件营销服务可以包括大约10个或数千个用户? 是否有可能使用Zend Framework实现可接受的性能? 有人有这样的经历吗? 非常感谢你。

6 个答案:

答案 0 :(得分:13)

对于我所看到的,Zend Framework性能的最终防御和性能优化建议来自Padraic Brady:

PHP Framework Benchmarks: Entertaining But Ultimately Useless

特别要注意他的四项性能优化建议:

  
      
  1. 不要使用Zend_Application。虽然Zend_App非常适合在标准化结构中创建一致的复杂引导,但它并没有在基线性能方面受到显着性能影响。更直接的引导程序(ZF的典型功能,直到Zend_App到达)要快得多,也可以在没有配置文件的情况下完成。

  2.   
  3. 使用ViewRenderer插件跳过。如果没有ViewRenderer,则需要手动配置Zend_View并向控制器添加render()调用。这实际上非常简单,速度相当快 - 从来没有真正成为ViewRenderer遗传学的一部分。

  4.   
  5. 使用自动加载功能。从框架库中删除require_once调用,以便忽略不需要的文件。将Zend_Loader_Autoloader的使用替换为不那么疯狂的自动加载器功能。事实上,祈祷Zend_Loader永远不会被使用 - 它做了很多文件操作,到目前为止,从未向我解释为具有任何价值。

  6.   
  7. 预加载所有内容(Symfony 2预览版!)。它会为您购买一些性能cookie并使速度基线均衡。使用简单的预加载脚本并不难。

  8.   

答案 1 :(得分:7)

我们在很多高流量网站上使用过ZF,到目前为止我们没有遇到任何问题。不过,我们确实必须跳过几个低悬的篮球圈。

一些建议:

  • 使用Zend_Queue来帮助批量发送邮件
  • 尽可能使用Zend_Cache
  • 使用插件加载程序缓存
  • 剥离require_once调用以支持自动加载
  • 摆脱你不想要的组件。 (按照建议,您不需要用于CLI /邮件的MVC堆栈)
  • 我们选择Sphinx支持Zend_Search_Lucene(巨大的性能提升)

对我们来说,最重要的是:开发时间远远超过硬件。灵活性和更高的代码重用率完全胜过我们必须处理的任何微小的性能损失。在大多数情况下,性能开销是非常固定的。

答案 2 :(得分:4)

你问:

  

使用Zend Framework可以实现可接受的性能吗?有人有这样的经历吗?

是的,我有一个拥有数百万用户的网站的经验。但是你确实需要使用技术来处理高负荷。缓存等...

CDN可以提供很多帮助。考虑用云开发。亚马逊可能很难开始使用,但如果需要,它可以帮助您扩展。

我想我所说的是,框架可能会花费你一些性能,但有助于使维护成为可能并更快地建立它(一旦你克服了学习曲线)。然后你必须评估需要做些什么才能提高性能(尽管从一开始就计划明显的问题有很大帮助。)

答案 3 :(得分:2)

我知道有几家公司在高性能/高负载情况下使用ZF。我不知道哪些可以陈述,哪些我不能,但其中一些是媒体公司必须处理流行的电视节目。其他人处理现场体育赛事。其他是需要为其内部组织服务的价值数十亿美元的公司。因此,许多运行相当高负荷的网站的公司都在使用ZF。我们的一个案例研究是Fox Interactive(http://framework.zend.com/about/casestudies),我也知道其他一些客户将其用于高性能网站。

Zend Framework MVC,开箱即用,速度非常快。我的博客大约在100毫秒内没有缓存,而且我的头版上发生了大量的事情。我可以通过一些内部缓存将其降低到50ms(整页缓存可以将其降低到单个数字ms,但之后它不会触及ZF)。

答案 4 :(得分:2)

借调乔的回答。我也看到ZF部署在处理数百万个请求的几个站点上,但还没有遇到问题。在处理大量流量时,最好使用超出框架的其他策略,包括但不限于缓存和使用CDN。

我发现大多数框架会为每个请求调用或创建许多类实例,我认为这是导致人们说框架X很慢而没有任何真实世界经验的原因。通过使用加速器和缓存,可以轻松减轻您在那里所遇到的任何打击。

如果你已经有一个你雇佣过的开发团队,我建议你使用他们最熟悉的并且拥有最丰富经验的人。最好的情况是,他们将能够调整该框架的代码。

答案 5 :(得分:0)

许多框架,任何框架确实用于构建和管理项目开发,但结果项目是“只是”php,html,css等与任何其他php网站相同。那么你有什么证据,这是对其他框架和非框架构建网站的真正时机,而不是轶事证据,Zend项目网站很慢。

编辑 - 下面的答案 - 我不认为框架使用的结构会损害性能。这可能更像是一个PHP被接受的问题,然后在网站设计和加载的优化中添加了多少“开销”,比如JavaScript等等。我想用Yui指导方法来缩小JavaScript和CSS并将它们加载到正确的顺序并确保PHP代码有效将有所帮助。您还可以使用其他标准内容,例如DB Caching和Zend Accelerator,这样可以加快速度。要注意的一件事是数据库连接。使用ORM层可能会产生影响。

然而,回到关于框架的原始问题,我认为它类似于询问使用Eclipse或Textmate是否会对结果网站的速度产生影响。