调试PHP时,XDebug一直是大众的不二选择,搭配上Webgrind,可以获得不错的效果。今天看某人的栖息地里的介绍,才发现了XHProf,于是体验了一下,感觉很酷,与XDebug相比,运行更轻便,表现更易懂,下面记录一下体验过程。
安装XHProf:
wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar zxf xhprof-0.9.2.tgz
cd xhprof-0.9.2
cp -r xhprof_html xhprof_lib <directory_for_htdocs>
cd extension
phpize
./configure
make
make install
编辑php.ini:
[xhprof]
extension=xhprof.so
;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
xhprof.output_dir=<directory_for_storing_xhprof_runs>
重启服务让修改生效,现在就可以使用XHProf了,不过为了显示效果更炫,最好继续安装Graphviz。
安装Graphviz:
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
tar zxf graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure
make
make install
安装完成后,会生成/usr/local/bin/dot文件,你应该确保路径在PATH环境变量里,以便XHProf能找到它。
使用XHProf:
// start profiling
xhprof_enable();
// run program
....
// stop profiler
$xhprof_data = xhprof_disable();
//
// Saving the XHProf run
// using the default implementation of iXHProfRuns.
//
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
// Save the run under a namespace "xhprof_foo".
//
// **NOTE**:
// By default save_run() will automatically generate a unique
// run id for you. [You can override that behavior by passing
// a run id (optional arg) to the save_run() method instead.]
//
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
echo "---------------\n".
"Assuming you have set up the http based UI for \n".
"XHProf at some address, you can view run at \n".
"http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".
"---------------\n";
如此一来,会在上面设定的xhprof.output_dir目录里生成名字类似49bafaa3a3f66.xhprof_foo的数据文件,可以很方便的通过Web方式浏览效果:
http://<xhprof-ui-address>/index.php?run=49bafaa3a3f66&source=xhprof_foo
目前显示的是表格形式的显示,点击页面上的[View Full Callgraph],就能看到精美的图片显示了。
补充:发现一个名为XLOG的扩展,看上去不错,可以记录URL信息。和XDEBUG这样的扩展相比,XLOG更轻便,所以部署在生产服务器上不会对性能造成过大影响。
分享到:
相关推荐
**xhprof:深入理解PHP性能测试...通过熟练使用xhprof,开发者可以有效地提升PHP应用的性能,减少不必要的资源消耗,从而提升用户体验。掌握这个工具,对于任何致力于优化PHP项目的开发者来说,都是一个重要的技能。
《PHP扩展xhprof及其应用详解》 PHP_xhprof是一个强大的性能分析和剖析工具,专为PHP开发人员设计,用于深入理解代码的运行时性能。...正确安装并使用xhprof,能帮助开发者提升PHP应用的效率,实现更流畅的用户体验。
Drupal-xhprof 是一个专...通过 Drupal-xhprof 模块,Drupal 开发者可以充分利用 xhprof 的优势,提升站点性能,为用户提供更快更流畅的体验。同时,这也是提升开发技能,深入理解 PHP 和 Drupal 运行机制的有效途径。
使用XHProf不仅可以帮助开发者找出性能瓶颈,而且可以帮助优化算法,减少不必要的资源开销,最终提升PHP应用程序的响应速度和用户体验。对于想要深入分析并提高PHP应用程序性能的开发者来说,XHProf是一个不可或缺的...
使用xhprof可以快速定位程序中的性能瓶颈,这对于优化程序性能和提升用户体验具有重要意义。 #### 3. xhprof的启用与使用方法 在生产环境中,可以通过一定的几率来启用xhprof,例如设置程序以万分之一的几率启用...
最新 新版本已开发完成,做了如下改进: :rainbow:支持本地Sqlite... 2019年想定个目标-重建xhprof扩展和xhgui-branch,有兴趣的朋友请移步到我的博客留言交流一下 获取大量信息PHP扩展很多,可以使用uprofiler,tide
针对以PHP为核心技术栈的系统而言,建立一个高效的性能监控体系对于保证系统的稳定性和提升用户体验具有重要意义。 #### 性能分析概述 性能分析主要是指通过一系列技术和工具来评估程序或系统的性能,并识别可能...
在现代Web开发中,用户对实时交互的需求越来越高,这促使开发者寻找更高效的数据传输方式,以提高用户体验。Ajax(Asynchronous JavaScript and XML)技术的出现,解决了页面无需刷新即可更新内容的问题,极大地提升...
在开发过程中,调试和性能优化是至关重要的环节。Yii2 提供了一个强大的调试工具栏(Debug Toolbar),它可以帮助开发者追踪应用的运行...在日常开发和项目维护中,充分利用这个扩展可以显著提高代码质量和用户体验。
- **使用XHProf定位算法瓶颈**:XHProf是一款PHP扩展,用于剖析PHP脚本的执行情况,帮助开发者找出性能瓶颈。 - **优化搜索与数据库**:查询压力随业务需求变化而变化,因此需要在线记录慢查询,以便及时发现和解决...
性能分析对于提升应用程序性能和用户体验非常关键。 XHProf,作为XHGui的基础,是由Facebook开发的性能分析工具,它能够收集函数调用的性能数据,包括运行时间、内存使用等,并提供了一个数据存储机制。XHProf能够...
通过工具如New Relic或XHProf,开发者可以分析应用性能瓶颈,针对性地优化代码或数据库配置。 总之,动态GS是结合了PHP、数据库技术和前端交互的综合性技术,旨在提供快速、响应式的搜索体验。在实现过程中,需要...
- **xhprof**:Facebook开源的PHP性能分析工具,可以提供更详尽的性能报告,包括CPU和内存使用情况。 - **Blackfire**:另一款强大的PHP性能分析工具,提供深入的剖析报告。 4. **HTTP响应头分析** - **Server-...
移动应用的性能直接影响用户体验、应用的粘性、口碑和转化率。即便是毫秒级的延迟也有可能导致用户满意度的显著降低。 其次,伍星指出性能不仅仅是速度的问题,一个优秀的架构应当具备稳定性、简单性、可维护性以及...
投资于性能优化,可以有效提高用户体验,降低服务器成本。 2. **PHP性能挑战**:PHP性能优化的难点主要在于IO、内存、CPU和网络的管理。此外,数据库、缓存和日志处理也是关键环节。PHP的交易优化、Zend引擎的字节...
这可以通过集成如XHProf、New Relic或Blackfire之类的性能分析工具来实现。这些工具能够提供详细的性能报告,帮助开发者定位代码中的瓶颈。 其次,代码优化是提升PHP应用性能的关键。这包括减少数据库查询、优化...
对于动态内容,可以采用页面片段缓存或全页缓存来提升用户体验。另外,理解HTTP缓存机制,设置合适的缓存头,可以有效利用客户端缓存,降低服务器压力。 架构设计在大型项目中尤其重要。采用模块化、分层架构,可以...
总的来说,`lararavel-performance-tracker` 是 Laravel 开发者的一把利器,它能帮助我们更好地理解和优化应用性能,提升用户体验。通过持续监控和分析,我们可以确保我们的 Laravel 应用始终处于最佳状态。
... 2. **调试器**:压缩包可能包含如Xdebug这样的调试工具,它允许开发者设置断点、查看变量值、跟踪调用堆栈,帮助找...在使用过程中,根据具体的项目需求和个人喜好选择合适的工具,可以显著提升开发体验和项目成果。