一、前言有用的东西还是记录下来吧,也方便以后的查询;这次记录一下xhprof的安装使用;xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开 关来控制是否进行profile。二、安装wget pecl/get/xhprof-0.9.3.tgz tar zxf xhprof-0.9.3.tgz cd xhprof-0.9.3/extension /usr/bin/phpize (php版本安装后生成的phpize文件,可根据phpinfo查看,所以php版本不同,生成的phpize也不同,此步骤主要生成configure文件) ./configure –with-php-config=/usr/bin/php-config (php-config的路径,也是php安装后生成的文件) make sudo make install (会自动将生成的扩展文件拷贝到扩展目录中/usr/lib64/php/modules)当然具体的php文件的目录,每个人不尽相同,可根据phpinfo查询三、php.ini配置根据phpinfo找到 extension_dir的目录(/etc/php.d/xhprof.ini)添加一下内容:extension=xhprof.so xhprof.output_dir=/tmp/xhprof //xhprof的分析日志 四、重启服务sudo /etc/init.d/http restart 查看phpinfo是否安装成功五、使用方法开头: xhprof_enable(); //开启监测 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数 //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同时分析CPU和Mem的开销 //要测试的代码 ... ... ... 结尾: $xhprof_data = xhprof_disable(); //停止监测,返回运行数据 $xhprof_root = '/(xhprof的虚拟主机目录)/'; //引入当初安装到xhprof虚拟主机目录中的文件 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(); $run_id = $xhprof_runs-save_run($xhprof_data, "xhprof"); echo 'a href="(xhprof的虚拟主机域名)/xhprof_html/index.php?run='.$run_id.'source=xhprof" target="_blank"xhprof统计/a'; 上边的代码使用了,给xhprof设置虚拟主机的方法。把源码包中的 xhprof_html 和 xhprof_lib 文件夹拷贝到自己建立的虚拟目录中cp -r xhprof_html xhprof_lib /xxx/xhprof/ (此处目的是建立数据分析目录,可将此目录配置成虚拟主机访问)运行后,统计点击返回的 xhprof统计 链接,即可。六、注意问题以及名词解释在显示的统计页面中,点[View Full Callgraph]图形化显示(最大的性能问题会用红色标出,其次是黄色);点击后,可能提示错误消息,执行以下命令即可yum install -y graphviz yum install graphviz-gd 名词解释Function Name 函数名 Calls 调用次数 Calls% 调用百分比 Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒) IWall% 调用的包括子函数所有花费时间的百分比 Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒) EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间 Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间 减Excl. Wall Time即为等待cpu的时间 ICpu% Incl. CPU(microsecs)的百分比 Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。 ECPU% Excl. CPU(microsec)的百分比 Incl.MemUse(bytes) 包括子函数执行使用的内存。 IMemUse% Incl.MemUse(bytes)的百分比 Excl.MemUse(bytes) 函数执行本身内存,以字节算 EMemUse% Excl.MemUse(bytes)的百分比 Incl.PeakMemUse(bytes) Incl.MemUse的峰值 IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比 Excl.PeakMemUse(bytes) Excl.MemUse的峰值 EPeakMemUse% EMemUse% 峰值百分比 xhprof的安装与简易用法xhprof是Facebook开源的轻量级PHP性能分析工具,Linux环境下可以通过pecl直接安装,比如在Ubuntu下仅需3行指令pecl install xhprof-beta echo "extension=xhprof.so" /etc/php5/fpm/conf.d/xhprof.ini service php5-fpm restart 之后可以通过phpinfo()检查扩展是否已经加载。具体如何使用呢,xhprof项目中已经提供了示例以及简易的UI,下载xhprof项目到web服务器,假设可以通过localhost/xhprof/访问,那么访问localhost/xhprof/examples/sample.php可以看到一些输出,并且提示通过访问xhprof-ui-address/index.php?run=XXXsource=xhprof_foo查看结果。接下来访问localhost/xhprof/xhprof_html/就可以看到已经保存的结果,列出了所有函数的调用以及所消耗的时间。分析一下示例代码sample.php,关键部分只有2行://开启xhprof并开始记录 xhprof_enable(); //运行一些函数 foo(); //停止记录并取到结果 $xhprof_data = xhprof_disable(); $xhprof_data中记录了程序单步运行过程中所有的函数调用时间及CPU内存消耗等,具体记录哪些指标可以通过xhprof_enable的入口参数控制,之后的处理已经与xhprof扩展无关,大致是编写了一个存储类XHProfRuns_Default,将$xhprof_data序列化并保存到某个目录,可以通过XHProfRuns_Default(__DIR__)将结果输出到当前目录,如果不指定则会读取php.ini配置文件中的xhprof.output_dir,仍然没有指定则会输出到/tmp。xhprof_html/index.php将记录的结果整理并可视化,默认的UI里列出了:•funciton name : 函数名•calls: 调用次数•Incl. Wall Time (microsec): 函数运行时间(包括子函数)•IWall%:函数运行时间(包括子函数)占比•Excl. Wall Time(microsec):函数运行时间(不包括子函数)•EWall%:函数运行时间(不包括子函数)每一项应该不难理解,以项目自带的sample.php为例,示例中编写了一个main()函数,main()函数中调用foo()、bar()等一些子函数进行了一点字符处理。整个程序运行过程中,main()函数只运行了一次,并且由于main()函数中包括了所有的逻辑,所以main()函数的IWall%占比为100%,但是由于main()函数的功能都是由子函数实现的,因此main()函数的EWall%只有0.3%,而foo()函数完成了主要的工作,EWall%有98.1%。因此在分析更大型的程序时,往往需要根据这几项指标分别排序,从不同的角度审视性能消耗。在xhprof_html/index.php中还可以看到[View Full Callgraph]链接,点击后可以绘制出一张可视化的性能分析图,如果点击后报错的话,可能是缺少依赖graphviz,ubuntu可以通过apt安装apt-get install graphviz更好的注入方式了解了上面这些,其实就已经可以将xhprof整合到任何我们已有的项目中去了。目前大部分MVC框架都有唯一的入口文件,只需要在入口文件的开始处注入xhprof的逻辑//开启xhprof xhprof_enable(XHPROF_FLAGS_MEMORY XHPROF_FLAGS_CPU); //在程序结束后收集数据 register_shutdown_function(function() { $xhprof_data = xhprof_disable(); //让数据收集程序在后台运行 if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); } //保存xhprof数据 ... }); 但是这样免不了要修改项目的源代码,其实php本身就提供了更好的注入方式,比如将上述逻辑保存为/opt/inject.php,然后修改php fpm配置文件vi /etc/php5/fpm/php.ini 修改auto_prepend_file配置auto_prepend_file = /opt/inject.php 这样所有的php-fpm请求的php文件前都会自动注入/opt/inject.php文件如果使用Nginx的话,还可以通过Nginx的配置文件设置,这样侵入性更小,并且可以实现基于站点的注入。fastcgi_param PHP_VALUE "auto_prepend_file=/opt/inject.php";
创新互联公司总部坐落于成都市区,致力网站建设服务有网站设计、成都网站设计、网络营销策划、网页设计、网站维护、公众号搭建、成都小程序开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!
1、FineReport
FineReport是一款纯Java编写的、集数据展示(报表)和数据录入(表单)功能于一身的企业级web报表工具,只需要简单的拖拽操作便可以设计复杂的中国式报表,搭建数据决策分析系统。
2、Echarts
前面说过了,Echarts是一个开源免费的javascript数据可视化库,它让我们可以轻松地绘制专业的商业数据图表。
大家都知道去年春节以及近期央视大规划报道的百度大数据产品,如百度迁徙、百度司南、百度大数据预测等等,这些产品的数据可视化均是通过ECharts来实现的。
3、FineBI
FineBI是新一代自助大数据分析的商业智能产品,提供了从数据准备、自助数据处理、数据分析与挖掘、数据可视化于一体的完整解决方案,也是我比较推崇的可视化工具之一。
FineBI的使用感同Tableau类似,都主张可视化的探索性分析,有点像加强版的数据透视表。上手简单,可视化库丰富。可以充当数据报表的门户,也可以充当各业务分析的平台。
4、pyecharts
Echarts(下面会提到)是一个开源免费的javascript数据可视化库,它让我们可以轻松地绘制专业的商业数据图表。当Python遇上了Echarts,pyecharts便诞生了,它是由chenjiandongx等一群开发者维护的Echarts Python接口,让我们可以通过Python语言绘制出各种Echarts图表。
5、Bokeh
Bokeh是一款基于Python的交互式数据可视化工具,它提供了优雅简洁的方法来绘制各种各样的图形,可以高性能的可视化大型数据集以及流数据,帮助我们制作交互式图表、可视化仪表板等。
数据分析软件有很多种,每一种都适合不同类型的人员。
简单说:
Excel:普遍适用,既有基础,又有中高级。中级一般用Excel透视表,高级的用Excel VBA。
hihidata:比较小众的数据分析工具。三分钟就可以学会直接上手。无需下载安装,直接在线就可以使用。
SPSS:专业统计软件,没有统计功底很难用的。同时包含了数据挖掘等高大功能。
SAS:专业统计软件,专业人士用的,不懂编程还是不要碰了。
MARLAB:建立统计与数学模型,但是比较难学,很难上手。
Eview:比较小众,建立一些经济类的模型还是很有用的。计量经济学中经常用到。
各种BI与报表工具:FineBI,FineReport,tableau,QlikView等。
除草剂地块。无论选择哪种茬
phpMyVisites
phpMyVisites是一个网站流量统计系统,它能够提供非常详细的统计报告和高级图形报表。phpMyVisites不是一个Apachelog分析工具,它建有自己的log。它的特点包括: 安装部署:提供可视化的安装向导,并且使用简单只要把一段简单的Javascript代码添加到你网站的页面中就能够马上开始收集访问者的信息。一个简洁,友好的界面可用来展示数据和帮助数据分析。提供简洁,明了的图形分析报表。安全:phpMyVisites能够最大限度地阻止入侵和外部攻击。支持多网站统计多用户:可以添加无限个用户并对每个用户赋予不同的管理权限(针对某一个网站的查看和管理的权限)。国际化支持:phpMyVisites提供 30种语言包。能够准确统计一段时间内的访问量(天/周/月/年)。访问者的回头率:新访问者,经常访问者,有规律性的访问者。提供多种文件格式的统计报告(PDF,Image等)。对被统计的网页进行分组/分级。访问者分析:统计访问者是从哪个页面离开网站的和从哪个页面进入网站或通过哪个搜索引擎的关健字进入网站,在网站的停留时间,所访问的页面等。可通过e-mail或RSS聚合获取网站的流量信息。
phpTrafficA
phpTrafficA是一个统计工具用于网站流量分析。基于PHP与MySQL开发。它能够统计你网站的流量,包括来自哪些搜索引擎,关健字和其它转向你网站的链接。它还能够分析浏览你网站所用的操作系统,浏览器,访问者停留时间等等。
AudiStat
AudiStat是一个基于PHP+MySQL开发的,轻量级的,占用服务器很少资源的网站流量统计系统。 它能够统计点击量,涉及的页面,访问者国家,访问者域名,访问者所用的浏览器等。统计信息展示页面可以通过Html代码自己定制。在最新版本中还加入跟踪google爬虫的功能。
piwik
Piwik是一套基于Php+MySQL技术构建,能够与Google Analytics相媲美的开源网站访问统计系统,前身是phpMyVisites。Piwik可以给你详细的统计信息,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等,并且采用了大量的AJAX/Flash技术,使得在操作上更加便易。此外,它还采用了插件扩展及开放API架构,可以让开发人员根据自已的实际需求创建更多的功能.
Webanalyse
采用PHP4开发的网站流量统计工具。WebAnalyse没有使用任何数据库,或Apache logs支持。以便让安装更加快速和简单。
Open Web Analytics
Open Web Analytics是一个开源的网站流量统计系统。基于PHP/Open Flash Chart/Ajax技术开发,既可以单独使用也可以与WordPress、GalleryMediaWiki集成使用。支持多个网站,集成 Google Maps,RSS/Atom订阅跟踪等功能。
SlimStat
SlimStat是一个基于PHP+MySQL开发的网站流量访问统计分析系统,类似于Google Analytics。它可以按时间段显示:每个页面的访问数,涉及的URL和域名,搜索关键字,浏览器种类、操作系统类型、国家、分辩率等。
具体内容去参考资料里面看吧,个人比较推荐piwik