Php 在高负载项目中使用Zend框架

Php 在高负载项目中使用Zend框架,php,zend-framework,Php,Zend Framework,Zend框架是一个很好的框架,但速度不是很快。 你能告诉我,在高负载项目中使用Zend框架是否值得吗?例如,在电子邮件营销服务中,Zend框架可以容纳大约10个或数千个用户? 使用Zend框架有可能获得可接受的性能吗? 有人有这样的期限吗? 非常感谢。很多框架,实际上任何框架,都是用于构建和管理项目开发的,但最终的项目是“只是”php、html、css等,与任何其他php网站一样。那么,你有什么证据,这是相对于其他框架和非框架构建站点的真实时间,而不是奇闻轶事证据,Zend项目站点是缓慢的 编辑

Zend框架是一个很好的框架,但速度不是很快。 你能告诉我,在高负载项目中使用Zend框架是否值得吗?例如,在电子邮件营销服务中,Zend框架可以容纳大约10个或数千个用户? 使用Zend框架有可能获得可接受的性能吗? 有人有这样的期限吗?
非常感谢。

很多框架,实际上任何框架,都是用于构建和管理项目开发的,但最终的项目是“只是”php、html、css等,与任何其他php网站一样。那么,你有什么证据,这是相对于其他框架和非框架构建站点的真实时间,而不是奇闻轶事证据,Zend项目站点是缓慢的

编辑--下面的答案-- 我认为框架使用的结构不会影响性能。这可能更多的是一个PHP是否可以接受的问题,然后是网站设计和加载优化(比如JavaScript)等会增加多少“开销”。我想,使用Yui指南缩小JavaScript和CSS,并以正确的顺序加载它们,确保PHP代码有效将有所帮助。您还可以使用其他标准的东西,如DB缓存和Zend Accelerator,这将加快速度。需要注意的一件事是DB连接。使用ORM层可能会产生影响

然而,回到最初关于框架的问题,我认为这类似于询问使用Eclipse或Textmate是否对结果站点的速度有影响

使用Zend框架有可能获得可接受的性能吗?有人有这样的期限吗

是的,我有数百万用户的网站经验。但您确实需要使用技术来处理高负载。缓存等

CDN有很大帮助。展望与云一起发展。亚马逊可能是一个痛苦的开始,但它可以帮助你的规模,如果需要的话


我想我要说的是,这个框架可能会让您损失一些性能,但有助于使维护成为可能,并更快地构建它(一旦您完成了学习过程)。然后,您必须评估需要采取哪些措施来提高性能(尽管从一开始就计划一些明显的问题会有很大帮助)。

我知道有几家公司在高性能/高负载场景中使用ZF。我不知道哪些我可以说,哪些我不能说,但其中一些是媒体公司,他们必须处理受欢迎的电视节目。其他人负责现场体育赛事。另一些是数十亿美元的公司,需要为其内部组织提供服务。因此,ZF正被许多运营高负载站点的公司所使用。我们的案例研究之一是Fox Interactive(http://framework.zend.com/about/casestudies)我还知道其他一些客户将其用于高性能网站


Zend框架MVC,开箱即用,将非常快。我的博客大约100毫秒后就回来了,没有缓存,而且在我的首页上发生了很多事情。我可能会使用一些内部缓存将其降低到50毫秒(完整页面缓存可以将其降低到一位数毫秒,但随后它不会触及ZF)。

我们在许多高流量站点中使用了ZF,到目前为止,我们还没有遇到任何问题。不过,我们确实不得不跳过几个低垂的铁环

一些建议:

  • 使用Zend_队列帮助批量邮寄
  • 尽可能使用Zend_缓存
  • 使用插件加载缓存
  • Strip require_once调用以支持自动加载
  • 扔掉你不想要的组件。(正如建议的那样,CLI/mail不需要MVC堆栈)
  • 我们选择了斯芬克斯,以支持Zend_Search_Lucene(巨大的性能增益)

我们的底线是:开发时间比硬件要昂贵得多。代码的灵活性和更高的重用率完全胜过我们必须处理的任何微小性能损失。在大多数情况下,性能开销是固定的。

支持Joe的回答。我还看到ZF部署在几个站点上处理数百万个请求,但尚未遇到问题。在处理如此大的流量时,最好使用框架之外的其他策略,包括但不限于缓存和CDN的使用

我发现大多数框架都会为每个请求调用或创建许多类实例,我认为这就是为什么人们会说FrameworkX很慢,而没有任何实际经验。通过使用加速器和缓存,您在那里受到的任何打击都可以轻松减轻


如果你已经雇佣了一个开发人员团队,我建议使用他们觉得最舒服、最有经验的开发人员。最好的情况是,他们能够针对该框架调整代码。

就我所见,Zend framework性能的最终辩护和性能优化建议来自Padraic Brady,地址:

特别是,请注意他的四项性能优化建议:

  • 不要使用Zend_应用程序。虽然Zend_应用程序非常适合在标准化结构中创建一致的复杂引导,但它的性能与基线性能之间并没有显著的差异。更直接的引导(Zend_应用程序出现之前ZF的典型情况)速度更快,也可以在没有配置文件的情况下完成

  • 跳过使用ViewRenderer插件。如果没有ViewRenderer,则需要手动配置Zend_View并向控制器添加render()调用。这实际上非常简单,而且速度相当快——快速从来都不是ViewRenderer的基因的一部分

  • 使用自动加载。Strip require_once调用来自框架库,因此不需要的文件将被忽略。将Zend_Loader_Autoloader的使用替换为不那么疯狂的Autoloader功能。事实上,祈祷吧