分析在 apache 中运行的 PHP
Posted
技术标签:
【中文标题】分析在 apache 中运行的 PHP【英文标题】:Profiling PHP running in apache 【发布时间】:2010-11-23 08:38:35 【问题描述】:我想知道在 apache 上运行的应用程序调用了哪些函数以及每个请求所用的时间。
是否有任何工具或任何其他方式可以获取这些数据。 我也想知道每个函数需要多少时间。
应用程序正在运行,无法停止。 所以我需要在运行环境本身中获取详细信息。 提前致谢。
【问题讨论】:
问题含糊不清,您是指分析 apache 内部函数调用还是在 apache 上运行的网页?以及涉及的任何编程语言? 我想分析内部函数调用。编程语言是 php,数据库是 mysql 【参考方案1】:最常用的行业工具之一是:http://www.xdebug.org/
我已经虔诚地使用它很长时间了!从它的首页,它执行以下操作:
“Xdebug 扩展通过提供大量有价值的调试信息来帮助您调试脚本。Xdebug 可以提供的调试信息包括:
* stack traces and function traces in error messages with:
o full parameter display for user defined functions
o function name, file name and line indications
o support for member functions
* memory allocation
* protection for infinite recursions"
【讨论】:
【参考方案2】:Xdebug 可以write a profiling file,你可以在kcachegrind 或wincachegrind 中分析。
【讨论】:
【参考方案3】:这取决于您是想要 active 还是 passive 分析。
New Relic 等被动工具在后台静默工作,并通过牺牲少量计算资源来收集有关所有请求的少量信息。这些通常具有有关整个服务器堆栈的更多信息。这些通常用于生产环境,这听起来像是您需要的。
活动分析器用于开发,每个请求只运行一次,收集大量关于您正在处理的应用程序部分的信息,但代价是性能受到很大影响。最常见的 PHP 主动分析器可能是 Xdebug。
从 Xdebug 分析数据的方法:
注意:如果您使用虚拟机、vagrant、docker 等,请确保将输出目录设置为共享卷,可在虚拟机外部访问
例如
(php.ini)xdebug.profiler_output_dir = "/project_root/tmp"
如果你使用 PHPStorm:
Tools > Analyse Xdebug Profiler snapshot...
对于那些在MacOS 上使用 Xdebug 的人:
使用自制软件安装 qcachegrind 和 AppViz
brew install qcachegrind
brew install graphviz
然后从命令行运行它:
qcachegrind cachegrind.out.1394
或者只运行 qcachegrind 并使用 GUI 导航器打开 xdebug 生成的 cachegrind 文件
【讨论】:
【参考方案4】:有几个 PHP 分析工具, 比如
xdebug Particletree【讨论】:
以上是关于分析在 apache 中运行的 PHP的主要内容,如果未能解决你的问题,请参考以下文章