监控PHP函数/执行的最佳方式是什么?

时间:2011-02-08 作者:NetConstructor.com

我正试图找到最好的方法来监控哪些PHP代码/函数、MySQL请求和/或插件正在减慢网站页面的速度。

我知道有很多不同的选择,包括wordpress插件和涉及firebug(FireHP)的解决方案,但你们觉得什么是最好的方法?

就个人而言,我觉得理想的解决方案是拥有某种类型的代码,这种代码可以在每次wordpress安装时默认安装。只有在URL的末尾添加了一个可选条目,才能执行任何调试/监视/报告,如=调试。为了安全起见,最好先登录wordpress管理区域并创建一个临时调试密钥,该密钥将创建一个散列密钥并将其附加到url(如debugkey=v09098v09aq2ov1a8923),该url仅可用30分钟。

但是回到实际的调试信息。。。我觉得在很多情况下使用firebug都很好,但我觉得如果可以在任何URL中附加其他内容,例如覆盖特定页面上使用的所有函数、挂钩或过滤器,以及每个URL的执行时间,这将是很有价值的。

无论如何。。。我想在座的许多人肯定也面临过这个问题,因此我会很感激你们利用任何解决方案来解决你们的问题。

请为可能阅读本说明的其他人概述有关安装的任何细节以及如何正确使用它。

UPDATED运行专用Linux服务器

4 个回复
最合适的回答,由SO网友:hakre 整理而成

有多种工具和可能性,舒尔最好手头有一些快捷的工具。我知道插件作者确实提供了调试标志,这样你就可以很容易地分析发生了什么。

至于插件,我没有测试过,但看了一些屏幕截图,至少提供了一些信息:Debug Bar (Wordpress Plugin) 还有BlackBox Debug Bar (Wordpress Plugin).

另一种是不太为人所知的钩子追踪器:SJ Hook Profiler.

我强烈建议xdebug 对于开发和测试系统来说,如果您需要评测或调试东西,那么拥有它是一种乐趣。

SO网友:Rarst

XHProf (开源,Facebook栈的一部分,用于性能监控)安装起来很痛苦(至少对于像我这样的Windows用户来说),但它是非常彻底和方便的PHP性能分析器工具。

我希望我的本地测试堆栈有win版本(

SO网友:kaiser

我只能推荐the Krumo php class 它可以在10秒内添加到任何安装中,并且不依赖于任何本地设置。所以,即使你不在办公室,你也会随身携带一个调试工具。只需确保在任何其他文件之后加载它,并使用if ( current_user_can(\'manage_options\') ) krumo::enable(); 因此,如果您正在调试已激活的内容,则不会有来宾或其他用户遇到您的deugging消息。

SO网友:Peter Rowell

您没有指出您的服务器安排是什么。如果您处于共享托管环境中,那么您的选择有限。如果它是您自己的服务器,那么您可以安装各种分析工具来了解全局。看看this thread 以上是一些选项。

此外,交付页面的速度慢可能是许多因素造成的,其中只有少数与PHP/MySQL相关。您可能会遇到DNS问题、客户端或服务器端的网络拥塞、计划不周的页面,这些页面有大量的JS加载早而不是晚,等等。

要测试基本HTML页面的网络连接+服务器交付的基本食物链,请尝试使用Apache Benchmark 程序仔细的你可以用这只小狗把服务器打得一塌糊涂,如果你在你的主机上模仿DOS攻击,你的主机公司也不会觉得好笑。

Update: 好的,专用的Linux服务器为您提供了重要的选项。特别是,我会加倍努力xdebug 它能够分析代码的执行情况。令人惊讶的是,在探查器下运行几次,就可以很快地将明亮的光线照射到一些正在吞噬机器的看似无辜的功能上。

如果没有什么东西会立即出现在你面前,那么就寻找那些似乎花费了比应该花费的更多时间(无论这意味着什么)和/或似乎经常被呼叫的例程。后者通常可以通过简单地缓存特定值的结果来纠正。如果这是一个涉及使用不同参数调用不同的高成本函数的一般问题,您可以查看memoizing 受影响的功能。我已经在Python中多次这样做了,但没有在PHP中这样做。这里有一篇关于one person\'s approach. 有更多关于这个主题的帖子。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?