美高梅平台下载-美高梅娱乐平台登录

热门关键词: 美高梅平台下载,美高梅娱乐平台登录

是否记录profile可以由程序控制

日期:2020-01-22编辑作者:美高梅平台下载

xhprof 是facebook开源出来的一个php性能测试工具,也可以称之为profile工具,这个词不知道怎么翻译才比较达意。跟之前一直使用的xdebug相比,有很多类似之处。以前对xdebug有一些记录还可以供参考,但是它的缺点是对性能影响太大,即便是开启了profiler_enable_trigger参数,用在生产环境中也是惨不忍睹,cpu立刻就飙到high。而xhprof就显得很轻量,是否记录profile可以由程序控制,因此,用在生产环境中也就成为一种可能。在它的文档上可以看到这样一种用法:以万分之一的几率启用xhprof,平时悄悄的不打枪。复制代码 代码如下:if == 1) {xhprof_enable;$xhprof_on = true;}在程序结尾处调用方法保存profile复制代码 代码如下:if {// stop profiler$xhprof_data = xhprof_disable();// save $xhprof_data somewhere ...}也可以用register_shutdown_function方法指定在程序结束时保存xhprof信息,这样就免去了结尾处判断,给个改写的不完整例子:复制代码 代码如下:if == 1) {xhprof_enable;register_shutdown_function(create_funcion('', "$xhprof_data = xhprof_disable(); save $xhprof_data;"));}至于日志,我暂时用的是最土的文件形式保存,定期清除即可。BTW:xhprof生成的图形方式profile真是酷毙了,哪段代码成为瓶颈,一目了然。by phpe:下面是一个例图:

一、xhprof扩展安装步骤

xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof分析结果以直观的图形方式显示),废话不多说,直奔正题。

关于改善xhprof使用情况的设想自从去年将xhprof用在生产环境以来,对生产环境的程序调试,性能优化都带来很多便利。但是在使用过程中,还是有一些细节需要改善。问题xhprof的profile日志直接以文件形式保存在生产服务器上,需要定时清理,或者收集起来移动到查看日志的工具机上。由于xhprof生成的profile是一个大数组,所以保存到文件时使用了标准的php serialize,日志文件偏大,一个不留神就容易占用很多服务器磁盘空间。查看日志列表时,一个个点开查看比较费劲。针对这几个问题,我有一些小小的设想。日志存放部署一个中央日志服务器,采用facebook的scribe来收集日志。生产环境的服务器产生的xhprof日志,都写入到scribe的客户端,由客户端自动同步到中央日志服务器的scribe上,不占用本地的存储空间。在代码上的改动也比较小,只要基于iXHProfRuns接口实现一个XhprofRuns类,调整save_run方法的存储方式即可。更换序列化方法xhprof默认是将profile信息用php原生的序列化方法处理后进行保存,而我在前两天比较过igbinary vs serialize vs json_encode的性能和占用字节数,这个测试里igbinary在各方面都有一定优势,尤其是占用存储空间会大幅度减小,所以我只要更换序列化方法为igbinary_serialize即可获得改善。优化列表展示我已经厌倦挨个查看profile日志的大图,费时费力还没有针对性。所以我现在的做法是,在profile日志的列表中将前1000个日志的总体执行时间直接输出到列表中,并且将执行时间过长的日志用红色粗体标识。做了这个小小的改动之后,当我想要去视察一下运行情况时,就把日志列表中那些红通通的链接点开看看就行了,真正的省时省力。如何从xhprof日志文件中获取执行时间?简单的代码如下复制代码 代码如下:/*** 由xhprof日志获得执行时间** @param string $log xhprof日志的文件路径* @return int 执行时间*/function getSpentTime { $profile = unserialize(file_get_contents; return $profile['main()']['wt'] / 1000;}

1、安装

  • PHP5版本的安装

wget
tar -zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4
cd extension/
phpize
./configure
make
make install

  • PHP7版本的安装

unzip xhprof-php7.zip
cd xhprof-php7/extension/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

2、修改php.ini配置文件

在php.ini配置文件中追加下面配置,并创建目录/home/wwwroot/default/xhprof_data

[xhprof]
extension = xhprof.so
// xhprof分析结果文件存放根目录
xhprof.output_dir = /home/wwwroot/default/xhprof_data

3、添加一个环境变量XHPROF_ROOT_PATH

为了后期每个项目都能使用xhprof来进行性能分析,建议给PHP加一个环境变量,这样之后,在任何项目代码里都可以很方便的调用xhprof来分析性能瓶颈,请执行如下操作:

vim /usr/local/php/etc/php-fpm.conf
env[XHPROF_ROOT_PATH]=/usr/local/php/include/xhprof/

4、将xhprof核心源代码复制到上述XHPROF_ROOT_PATH环境变量所指定的目录下

cp -r xhprof_lib /usr/local/php/include/xhprof/xhprof_lib

美高梅平台下载,5、将下面两个目录复制到xhprof_data的同级目录下(最好都放到web根目录下)

查看分析结果文件有用,如下图所示:

美高梅平台下载 1

//执行
cp -r xhprof_html /home/wwwroot/default/xhprof_html
cp -r xhprof_lib /home/wwwroot/default/xhprof_lib

//改变xhprof_data目录拥有者,为了浏览器访问时能在xhprof_美高梅娱乐平台登录,data目录下写入文件
chown -R www:www xhprof_data

本文由美高梅平台下载发布于美高梅平台下载,转载请注明出处:是否记录profile可以由程序控制

关键词:

我们可以用php来开发Shell程序

1.基础知识 1.1 什么是Shell编程? 在 Unix 中,shell可不是简单的命令解释器,而是一个全功能的编程环境。Shell是操作系...

详细>>

复制代码 代码如下,复制代码 代码如下

代码如下所示:复制代码 代码如下:'ERROR',2='WARNING', 4='PARSE', 8='NOTICE', 16='CORE_ERROR',32='CORE_WARNING', 64='COMPILE_ERROR',128='C...

详细>>

PID文件的位置. 默认为空.,并监听不同的端口和

ps aux |grep php-fpm |more 查看php-fpm总数php-fpm.conf 配置pidstringPID文件的位置. 默认为空.error_log string错误日志的位置. 默认:...

详细>>

php不单可以写前台网页

php_cli模式简介 php-cli是php Command LineInterface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务...

详细>>