[PHP] Xhprof 非侵入式使用指南
一般使用 Xhprof ,按文档操作可以快速上手,文件头开启 Xhprof,应用结束处得到访问的url查看。
这种使用方式可以快速看到效果,同时也有一些不好的地方:
一是不利于重复利用写好的示例代码;二是你需要改不同的Web应用。
怎样做到不在现有应用中加入无关紧要的代码,又能达到目的?
php提供了一种机制:
php.ini 中的 auto_prepend_file 允许我们每次php应用访问前都先执行某个文件;
( http://php.net/manual/zh/ini.core.php#ini.auto-prepend-file )
register_shutdown_function() 允许我们注册某个函数,在php的最后执行;
( http://php.net/manual/zh/function.register-shutdown-function.php )
利用上面的机制,我们就能让php在应用访问前执行 Xhprof 开启,访问结束后 Xhprof 关闭并记录.
程序已经写好,下面是操作步骤,具体的源代码中也有:
1. 装好 xhprof (pecl install xhprof-0.9.2),php.ini 加入 extension=xhprof.so
2. 把 本文件、xhprof源代码中xhprof_html目录、xhprof_lib目录,三者放在web可访问根目录.
3. 配置 php.ini 加入以下部分,并重启 php-fpm:
xhprof.output_dir=/tmp
;auto_prepend_file=/home/www/Xhprof.php
( 可以不指定auto_prepend_file,而是在具体应用的 Nginx 配置中,访问php的区间段加入: )
( fastcgi_param PHP_VALUE "auto_prepend_file=/home/www/Xhprof.php"; )
( 这种方式更优一点,主要是不用影响整个php的行为. )
4. 修改程序 configure 部分,一般情况需要改 $xhprof_lib_path 和 $supervise['urls'];
5. 访问你的任何web应用.
6. 查看run_id:tail /tmp/xhprof.log
7. 查看效果:http://localhost/xhprof_html/?run=58468d515bddd&sort=mu&source=xhprof_testing
用run_id替换地址中的run.

Source-code:https://github.com/farwish/php-lab/blob/master/func_reference/Xhprof.php
Link:http://www.cnblogs.com/farwish/p/6139027.html
[PHP] Xhprof 非侵入式使用指南的更多相关文章
- BlockCanary 一个轻量的,非侵入式的性能监控组件(阿里)
开发者博客: BlockCanary — 轻松找出Android App界面卡顿元凶 开源代码:moduth/blockcanary BlockCanary对主线程操作进行了完全透明的监控,并能输出有 ...
- 使用phpAnalysis打造PHP应用非侵入式性能分析器
使用phpAnalysis打造PHP应用非侵入式性能分析器,查找PHP性能瓶颈. 什么是phpAnalysis phpAnalysis是一款轻量级非侵入式PHP应用性能分析器,适用于开发.测试及生产环 ...
- Spring学习(1):侵入式与非侵入式,轻量级与重量级
一. 引言 在阅读spring相关资料,都会提到Spring是非侵入式编程模型,轻量级框架,那么就有必要了解下这些概念. 二. 侵入式与非侵入式 非侵入式:使用一个新的技术不会或者基本不改变原有代码结 ...
- 非侵入式JavaScript(Unobtrusive javaScript)理解
转载自 https://my.oschina.net/leegq/blog/279750 在Web的早期阶段,也就是在jQuery出现以前,在同一个文件中混杂JavaScript代码和HTML标记是非 ...
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
MVC的验证(模型注解和非侵入式脚本的结合使用) @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...
- Spring 侵入式和非侵入式
1.非侵入式的技术体现 允许在应用系统中自由选择和组装Spring框架的各个功能模块,并且不强制要求应用系统的类必须从Spring框架的系统API的某个类来继承或者实现某个接口. 2.如何实现非侵入式 ...
- Spring框架是一种非侵入式的轻量级框架
摘自<Spring框架技术> Spring框架是一种非侵入式的轻量级框架 1.非侵入式的技术体现 允许在应用系统中自由选择和组装Spring框架的各个功能模块,并且不强制要求应用系统的类必 ...
- 支付宝开源非侵入式 Android 自动化测试工具 Soloπ
Soloπ(SoloPi)是支付宝开源的一个无线化.非侵入式的Android自动化测试工具,公测版拥有录制回放.性能测试.一机多控三项主要功能,能为测试开发人员节省宝贵时间. 本文是SoloPi团队关 ...
- 侵入式&非侵入式
侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如:Struts框架 非侵入式设计 引入了框架,对现有的类结构没有影响. 例如:Hibernate框架 / Spring ...
随机推荐
- HTML标签拾遗
在日常的开发过程中,经常与HTML标签打交道,常用的标签往往是那么几个,在此记录下后续可能会用到的html标签,或许会有意向不到的奇效.全部内容来自w3cschool. <abbr> ...
- Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误
新版API上线后,发现LOG文件没有正常输出.查看Tomcat的Log文件发现如下的错误信息 May , :: AM com.sun.xml.ws.server.sei.EndpointMethodH ...
- CSS背景 顶上 顶下之类详解
background: url(../images/img17.jpg)no-repeat 0px opx ; 背景的第一个属性石左右值,第二个数字是上下值 举个案例,比如图片只有1400宽300高, ...
- Python:python中math模块中提供的基本数学函数
sin(x):求x的正弦 cos(x):求x的余弦 asin(x):求x的反正弦 acos(x):求x的反余弦 tan(x):求x的正切 atan(x):求x的反正切 hypot(x,y):求直角三角 ...
- Hibernate和Struts2整合的增、删、改、查
1. 新建一个Web项目,准备好jar包和配置文件. 2. web.xml文件中添加过滤器 <?xml version="1.0" encoding="UTF-8& ...
- bind9+mysql dlz(Dynamically Loadable Zones)
yum install openssl openssl-devel groupadd mysqluseradd -g mysql -s /sbin/nologin -M mysqlchown -R m ...
- C++STL内存管理方法(g++版)
STL作为C++的经典作品,一直备受人们关注.本文主要介绍STL的内存管理策略. 早期的STL内存管理 第一次接触STL源码是看侯捷先生的<STL源码剖析>,此书通俗易懂,剖析透彻,是极佳 ...
- 对象化前端表单(Form)提交
很常见的业务场景,就是前端一个表单,submit给后台,在web.form时代,有from 的runat="server" 配合submit 自动会提交给服务端,然后服务端解析Re ...
- vim的一些配置
所有用户的共同配置位于 /etc/vimrc 或者 /ect/vim/vimrcz中,可能还会有其他的配置文件,例如vimrc.tiny,具体的应用场景文件内会有说明. 某个特定用户的vim配置位于 ...
- HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用
你好,这个属性主要是设置浏览器优先使用什么模式来渲染页面的.常见写法如下:<meta http-equiv="X-UA-Compatible" content="I ...