php7 gitbook,php7性能分析扩展工具xhprof
发布日期:2021-06-24 17:42:10 浏览次数:4 分类:技术文章

本文共 2185 字,大约阅读时间需要 7 分钟。

XHProf 是一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。 函数性能报告可以由调用者和被调用者终止。 在数据搜集阶段 XHProf 通过调用图的循环来检测递归函数,通过赋予唯一的深度名称来避免递归调用的循环。

XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结果更加简单方便。 同时也支持查看调用图。 XHProf 的报告对理解代码执行结构常常很有帮助。 比如此分层报告可用于确定在哪个调用链里调用了某个函数。

XHProf 对两次运行进行比较(又名 "diff" 报告),或者多次运行数据的合计。 对比、合并报告,很像针对单次运行的“平式视图”性能报告,就像“分层式视图”的性能报告。

一、XHProf安装php扩展# 下载解压扩展包 https://pecl.php.net/package/xhprof(其他仓库:https://github.com/longxinH/xhprof)

wget -c https://pecl.php.net/get/xhprof-2.2.3.tgz

tar -xzvf xhprof-2.2.3.tgz

#生成扩展包so文件

cd xhprof-2.2.3/cd xhprof-2.2.3/

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

66d61eb5a8661a92f993c61aab4de346.png

4d07af0c50115b17e1bf403b9104bf73.png#php.ini配置

vim /usr/local/php/etc/php.ini

extension=xhprof.so

xhprof.output_dir=/tmp/xhprof

#重启php-fpm

service php-fpm restart

7b0f413cba704c3265e09dc724fcaad1.png

二、XHProf使用

使用前需要先下载xhprof界面展示代码,放在网站运行目录中。

1.安装xhprof界面代码

从仓库(https://github.com/longxinH/xhprof)中复制xhprof_lib和xhprof_html 两个文件夹到网址运行目录。并修改xhprof_lib文件夹中的callgraph.php文件中type为svg。

图片为svg类型可以解决错误:failed to execute cmd: " dot -Tpng". stderr: `Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot '

29dc43d43ece83252257cdd1952982c7.png

2.安装graphviz

graphviz 是一个图表生成软件,图标文件xhprof_html/callgraph.php会调用graphviz工具命令。。yum install -y libpng

yum install -y graphviz

yum install -y graphviz-gd<?php

// 开始分析

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

// 需要分析的代码

// 结束分析

$xhprof_data = xhprof_disable();

*如果安装失败选择源码安装:wget -c https://gitlab.com/graphviz/graphviz/-/package_files/6163716/download

tar -xzvf download

cd  graphviz-2.46.0

make #make后如果有报错直接忽略,直接安装

make install

dot -v

623fa6f328d7273142728b9009f6237a.png

3.生成采样<?php

ini_set('display_errors', on);

//开启性能分析

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

// 程序执行完调用

register_shutdown_function(function() {

//停止性能分析

$xhprof_data = xhprof_disable();

include_once  './xhprof_lib/utils/xhprof_lib.php';

include_once  './xhprof_lib/utils/xhprof_runs.php';

$xhprof_runs = new \XHProfRuns_Default();

$run_id = $xhprof_runs->save_run($xhprof_data, 'zx');

// echo $run_id;

});

访问采样:https://server_name/xhprof_html/index.php。

采样报告图:

67cc5efdc18b389da65cd25f749f24cf.png

4f4d1928d58107018b04847db7d6d71f.png

转载地址:https://blog.csdn.net/weixin_34190683/article/details/115144245 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php 字符转数字,PHP怎么将字符串转换成数字
下一篇:php 安装zip,php7.4安装zip扩展

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月21日 07时54分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Java多线程的11种创建方式以及纠正网上流传很久的一个谬误 2021-06-30
JDK源码研究Jstack,JMap,threaddump,dumpheap的原理 2019-04-27
Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现 2019-04-27
javac编译原理和javac命令行的使用 2019-04-27
Unity使用UnityWebRequest实现本地日志上传到web服务器 2019-04-27
Unity使用RenderTexture实现裁切3D模型 2019-04-27
美术和程序吵架,原来是资源序列化格式设置不统一 2019-04-27
Unity iOS接SDK,定制UnityAppController 2019-04-27
Unity iOS接SDK前先要了解的知识(Objective-C) 2019-04-27
python遇到了‘module‘ object has no attribute ‘socket‘问题,大概率是这个原因 2019-04-27
记一次iOS闪退问题的定位:NSLog闪退 2019-04-27
Unity打开照相机与打开本地相册然后在Unity中显示照片(Android与iOS) 2019-04-27
无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标 2019-04-27
Unity获取系统信息SystemInfo(CPU、显卡、操作系统等信息) 2019-04-27
Unity中获取物体的尺寸(size)的三种方法 2019-04-27
Unity中的关节组件和绳子效果的实现 2019-04-27
Unity可视化编程插件: Bolt,可以像UE4的蓝图那样啦 2019-04-27
Android使用adb logcat时日志中文乱码问题,使用chcp 65001设置编码即可 2019-04-27
Android的.dex、.odex与.oat文件扫盲 2019-04-27
Unity移动应用如何在Bugly上查看崩溃堆栈 2019-04-27