Eclipse PHP Profiler - 如何获取参数?

Posted

技术标签:

【中文标题】Eclipse PHP Profiler - 如何获取参数?【英文标题】:Eclipse PHP Profiler - How Do You Get Parameters? 【发布时间】:2011-08-17 16:42:55 【问题描述】:

使用 Eclipse 的 php Profiler,我发现我的代码中的一个被多次调用的方法存在瓶颈。问题是我不知道传递了哪些参数来确定如何重现症状。

我已尝试将分析器报告为需要一整秒才能完成的代码包含以下内容:

$startTime = microtime(true);
$safe_text = wp_check_invalid_utf8( $text );
$endTime = microtime(true);
$time = $endTime - $startTime;
if ($time > .05) 
    error_log('Time: ' . $time . ' text [' . $text . ']');

我在错误日志中从来没有遇到过这样的问题,但分析器会继续报告一个需要整整一秒钟才能完成的事件。在浏览器中刷新页面确实表明速度很慢。

我在代码的 3 个不同区域都遇到了同样的问题,知道在方法运行缓慢时传递给方法的内容可能有助于解决问题。有什么方法可以确定在间歇性慢速方法运行缓慢时传递了什么?

【问题讨论】:

你尝试var_dumping 你的 $startTime 和 $endTime 变量了吗? 您使用 xdebug 进行分析? @Rikudo 否。但是我已经删除了 if($time > .05) 条件并手动验证了所有 $time 结果,因为每个结果只需要几毫秒。 @Gerry 没有。看起来我正在使用 Zend 调试器。 @Levinaris 好吧,Zend Debugger 中关于分析器的文档似乎更少,所以我的回答中的建议仍然是我能提供的最好的,我相信这是正确的解决方案。将来您可能想看看 XHProf,因为它是我迄今为止使用过的最好的 php 分析器(尽管仍然不提供调用级别细分):techportal.ibuildings.com/2009/12/01/profiling-with-xhprof 【参考方案1】:

可以使用 Eclipse 用于分析的 xdebug 来设置它,但是默认情况下它是禁用的,因为在进行大量调用或传递大型数据结构的项目中记录这些数据会很快使您的可用内存不堪重负。

我建议您像当前一样进行手动记录,尽管我会首先测量对 wp_check_invalid_utf8 的所有调用的总时间,以确保您确实在该部分确实存在问题,而不仅仅是由 Eclipse 分析器本身引起的问题。一旦确定总时间超出您的预期,然后开始记录各个调用及其参数。

【讨论】:

欣赏信息 - 很遗憾还没有更好的解决方案。我期待有可用的硬件来支持该选项。

以上是关于Eclipse PHP Profiler - 如何获取参数?的主要内容,如果未能解决你的问题,请参考以下文章

PHP:在运行时更改 xdebug.profiler_output_name 选项

php Wordpress调试和Profiler

PHP 简单的Profiler

如何使用 Xdebug 分析单个 php 文件?

用于实时站点的简单 PHP Profiler?

ini php.ini profiler,...?XDEBUG_PROFILE