Zend框架表现缓慢

时间:2009-05-25 10:30:40

标签: php zend-framework

我正在使用zend框架在基于社区的网站上工作 - 但它的速度很慢,需要一段时间来加载页面。我想知道我应该研究zend框架的哪些方面以确保它运行得更快。

非常感谢任何提示和帮助:)


很好的建议 - 我接管了数据库并从头开始索引 - 没有任何索引可以开始:\但无论如何速度有所改善,但仍然相当慢。还有什么我必须留意的吗?

因为我只是假设它与框架有关,就像我第一次运行使用框架制作的基本教程项目一样 - 它们也有点慢。


很好的提示 - 看看zend性能指南文章。我不太确定在哪里放置缓存表元数据的代码虽然:( [抱歉听起来像这样的菜鸟]如this link所述

14 个答案:

答案 0 :(得分:20)

确定瓶颈所在的唯一方法是进行深度分析。

我使用xdebug,结合kcachegrind(用于windows的kde的一部分)。它为每个执行的PHP脚本生成完整的调用跟踪,然后您可以检查这些脚本以找出大多数时间占用的函数。无需更改代码,因此您可以轻松地分析第三方库,如Zend Framework。

答案 1 :(得分:8)

如果您可以与服务器位于同一个局域网上(至少用于测试),那么您可以(稍微)从客户端验证您的个人资料。

如果它是一台机器,减速的最可能原因是内存问题(使用太多或主内存太少的东西),然后是可怕的数据库查询。

PHP操作码缓存似乎总是有帮助,还记得禁用“atime”(* nix上的noatime挂载选项,Windows上的注册表更改)以避免昂贵的磁盘写入。

关于Zend特定事项的一篇不错的文章是: http://till.vox.com/library/post/zendframework-performance.html

答案 2 :(得分:7)

在服务器上安装APC。操作码缓存消除了框架引起的大量开销。您通常只需运行

即可完成此操作
pecl install apc

在服务器上。

答案 3 :(得分:6)

绝对安装APC,因为它可能会为您提供最大的性能提升(2-4x)。我还建议您查看Performance section of the reference guide

Zend_Cache可以与许多ZF组件一起使用,以加快它们的速度,也可以与您自己的数据一起使用。

答案 4 :(得分:6)

Web上的大多数性能问题都是数据库问题,在继续之前总是开始查看数据库方面的事情。

可能有很多数据库调用,只需较少的调用,索引不在正确的列上。

这些通常会减慢速度。

答案 5 :(得分:3)

最明显的一个是zend_cache

答案 6 :(得分:3)

看看这里:

Zend

Performance Guide

Zend_Log可以登录&追踪你的申请

答案 7 :(得分:2)

您应该查看官方的Zend性能指南。
关于如何调整Zend的速度有很多技巧,其中大部分是关于减少启动时文件负载的减少量。

http://framework.zend.com/manual/en/performance.classloading.html

答案 8 :(得分:2)

关于Zend_Db_Table元数据缓存,您应该在引导程序中配置缓存,并将其作为静态属性添加到Zend_Db_Table_Abstract类。

(类似于打开默认数据库适配器并将其设置为所有Zend_Db_Table个对象的默认适配器的方式。)

在您链接到的手册部分中有一个配置默认元数据缓存的代码示例。这将在你的引导程序中。

答案 9 :(得分:1)

同意数据库评论。如果您的站点很慢,很可能不是Zend框架问题,而且很可能是数据库问题。

答案 10 :(得分:1)

如果您的数据库中没有任何INDEXES,那么我确定还有其他一些你做错了!

无论如何......安装APC来缓存你的操作码。这将大大缩短执行时间。由于需要在应用程序中包含大量脚本,大多数框架都会产生巨大的开销。 APC将逐字解决这个问题。 FastCGI还可以显着提高性能。持久数据库连接也是如此(假设FastCGI已安装并正常工作)。

答案 11 :(得分:0)

http://www.nabble.com/Caching-of-MVC-and-other-ZF-components-td15576554s16154.html

我想我们必须等待PHP5.3发布,然后希望我们可以在生产盒上使用它。 :)

答案 12 :(得分:0)

http://www.zend.com/webinar/Server/webinar-Magento-Performance-Optimization-20090709.flv

现在观看他们的免费网络研讨会,他们展示了人们在这个帖子中提到的很多解决方案。

希望这有帮助!

答案 13 :(得分:0)

我遇到了一个非常类似的问题,使用http://localhost/MY_WEB_SITE在我的本地工作时加载一个页面需要10秒钟。我偶然尝试http://127.0.0.1/MY_WEB_SITE并且它的工作速度非常快(几乎是立即)。我不确定使用localhost的问题是什么,但它对我有用(顺便说一下,我在Windows 7上,检查了system32 / drivers / etc / hosts,并在那里定义了localhost)。 所以使用127.0.0.1代替localhost也可能是你的解决方案。