Thinkphph或php如何使用Xhprof对程序进行性能分析

在开发高性能的 Web 应用时,性能分析是一个不可或缺的环节。ThinkPHP 作为一个流行的 PHP 框架,提供了丰富的功能和良好的扩展性。那么如何在 ThinkPHP 项目中使用 Xhprof 工具进行性能分析呢?请查看本文,将会帮助你识别你thinkphp程序的性能瓶颈并进行优化。

如何安装Xhprof

查看:如何在Windows上安装PHP性能检测工具XHProf

1.配置性能分析的行为

首先,在 application/tags.php 文件中,定义性能分析的行为,并将其绑定到应用的生命周期钩子上,即:分别绑定在app_init 应用初始化、app_end应用结束的钩子上,以下是配置的示例:

<?php
 // 应用行为扩展定义文件
return [
    // 应用初始化
    'app_init'     => [
        'app\\common\\behavior\\XhprofEnable',
    ],
    // 应用开始
    'app_begin'    => [],
    // 模块初始化
    'module_init'  => [],
    // 操作开始执行
    'action_begin' => [],
    // 视图内容过滤
    'view_filter'  => [],
    // 日志写入
    'log_write'    => [],
    // 应用结束
    'app_end'      => [
        'app\\common\\behavior\\XhprofDisable',
    ],
];

2.配置参数控制化

在 config/app.php 配置文件中添加 Xhprof 的控制参数:

// config/app.php
'xhprof' => [
    'enable' => true, // 开启性能分析
    'name' => 'mysite', // 项目名称,用于区分多个项目
    'domain' => 'http://www.testpf.com', // 性能分析结果展示的域名
],

3.创建性能分析行为

接下来,创建性能分析的开始和结束行为类。这些类将在应用初始化和结束时分别触发。

开始:XhprofEnable.php

路径:application/common/behavior/XhprofEnable.php

<?php
 
 
namespace app\common\behavior;
 
use think\facade\Env;
 
class XhprofEnable
{
    public function run() {
        //控制是否开启分析(生成环境也可以做概率性捕获分析)
        if(config('xhprof')['enable'] && input('DEBUG_PROFILE') && extension_loaded('xhprof')
        ) {
 
            //这里需要注意的是将xhprof_lib文件夹拷贝到网站的能访问到的目录,我这里是放在了项目的extend目录下
            require_once Env::get('root_path') . 'extend/'.'xhprof_lib/utils/xhprof_lib.php';
            require_once Env::get('root_path') . 'extend/'.'xhprof_lib/utils/xhprof_runs.php';
            xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
        }
    }
}

结束:XhprofDisable.php

路径:application/common/behavior/XhprofDisable.php

<?php
 
namespace app\common\behavior;
 
 
class XhprofDisable
{
    public function run() {
        if(config('xhprof')['enable'] && input('DEBUG_PROFILE') && extension_loaded('xhprof')
        ) {
            $ns = config('xhprof')['name'] ?: 'myxhprof';
            $xhprofData = xhprof_disable();
            $xhprofRuns = new \XHProfRuns_Default();
            $runId = $xhprofRuns->save_run($xhprofData, $ns);
 
 
            //性能分析结果展示的域名地址
            $url = config('xhprof')['domain'].'/xhprof_html/index.php';
            $url .= '?run=%s&source=%s';
            $url = sprintf($url, $runId, $ns);
            echo '<a href="'.$url.'" target="_blank">查看分析结果</a>';
            exit;
        }
    }
}

4.xhprof_lib 文件引入

将 Xhprof 的库文件 xhprof_lib 拷贝到项目的 extend 目录下,确保路径正确无误。

xhprof_lib 文件引入 - 示例图

5.执行需要被分析的接口

在运行接口或者网页的是否,通过添加 DEBUG_PROFILE=1 参数来启动性能分析:

示例如下

https://www.toymoban.com/index/index/wswtest?DEBUG_PROFILE=1

文件:application/index/controller/Index.php,测试文件代码:

<?php
namespace app\index\controller;
use think\Controller;
 
class Index extends Controller
{
   
    public function wswtest(){
        return $this->handleData();
    }
 
    public function handleData(){
        sleep(5);
        $this->haha();
        return 'ss';
    }
 
    public function haha(){
        sleep(2);
        return 'ss';
    }
}

运行结果

php性能检测运行结果

6.查看性能分析报告

完成性能分析后,可以通过点击生成的链接或直接访问部署好的分析项目来查看性能报告。报告中可以查看调用链和详细的性能数据。

查看性能分析报告-1

查看性能报告

查看性能分析报告-2

点击 [View Full Callgraph] 查看调用链

查看性能分析报告-3文章来源地址https://www.toymoban.com/diary/php/752.html

到此这篇关于Thinkphph或php如何使用Xhprof对程序进行性能分析的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/php/752.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
使用 Python将pdf转化为图片
上一篇 2024年03月21日 15:44
如何在Windows上安装PHP性能检测工具XHProf
下一篇 2024年03月21日 20:25

相关文章

  • 如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

    PostgreSQL中的 pg_stat_statements 是一个强大的插件,用于追踪执行时间最长的SQL语句。通过它,我们可以获取有关SQL语句执行频率、总执行时间、平均执行时间等信息,从而进行性能调优和问题分析。 首先,我们需要确保 pg_stat_statements 插件已经安装。在大多数PostgreSQL发行版中,

    2024年04月25日
    浏览(58)
  • 使用Profiler进行性能分析

    帧率:单位FPS,是衡量游戏性能的标准。 渲染:绘制一帧到屏幕被称为渲染一帧。 每帧花费时间=1000/[渴望的帧率] 在目标平台上的播放器中对应用程序进行性能分析 在Unity编辑器中以运行模式对应用程序进行性能分析 对Unity编辑器进行性能分析 获得有关应用程序的准确时序

    2024年02月05日
    浏览(54)
  • 使用火焰图进行性能分析(一)

    分析函数执行的频度; 分析哪些函数经常阻塞; 分析哪些函数频繁操作内存; 火焰图的主要特点: 每一列代表一个调用栈,每个格子代表一个函数; 纵轴呈现出栈的深度,按照各函数的调用关系自下而上排列; 最顶端的格子代表采样时正在占用CPU的函数; 横轴:采集到的

    2024年02月05日
    浏览(54)
  • ElasticSearch与PHP的集成:如何使用PHP与ElasticSearch进行交互

    Elasticsearch是一个基于Lucene库的搜索引擎,它提供了实时、可扩展和可伸缩的搜索功能。它通常用于构建实时搜索、分析和数据可视化应用程序。PHP是一种广泛使用的服务器端脚本语言,它可以与Elasticsearch集成以实现高效的搜索功能。 在本文中,我们将讨论如何使用PHP与Ela

    2024年02月22日
    浏览(64)
  • 如何使用 PHP 进行数据库备份和恢复?

    想要使用PHP进行数据库备份和恢复? 首先,我们要明白为什么要备份和恢复数据库。因为有时候,我们的数据库可能会被黑客攻击或者系统故障所影响,导致数据丢失或损坏。所以,为了防止这种情况发生,我们需要定期备份数据库,并在需要时快速恢复。 好了,现在我们

    2024年02月15日
    浏览(69)
  • 如何使用 PHP 进行数据库连接池优化?

    连接池是一个存放数据库连接的地方,就像一个水池,你在这里可以得到数据库连接。这比每次都新建和关闭连接要快得多,因为连接池中的连接是可以重复使用的。 下面是一个简单的例子,展示如何使用PHP和PDO(PHP Data Objects)来创建一个连接池。 这个类有一个连接池,其

    2024年02月15日
    浏览(61)
  • LabVIEW使用图像处理进行交通控制性能分析

    LabVIEW使用图像处理进行交通控制性能分析 采用普雷维特、拉普拉斯、索贝尔和任意的空间域方法对存储的图像进行边缘检测,并获取实时图像。然而,对四种不同空间域边缘检测方法的核的性能分析。 以前,空路图像存储在数据库中,道路上没有任何车辆。将图像转换为阵

    2024年02月13日
    浏览(63)
  • 使用阿里巴巴开源神器Arthas进行性能分析

    目录 前言: Arthas介绍 启动 分析命令 Profiler工具 前言: Arthas是一款由阿里巴巴开源的Java诊断工具,它可以在生产环境中帮助开发人员快速地定位问题,并进行高效的性能分析。通过在命令行中输入简单的

    2024年02月11日
    浏览(65)
  • 性能分析与调优: Linux 使用 iperf3 进行TCP网络吞吐量测试

    目录 一、实验 1.环境 2.TCP网络吞吐量的微观基准测试 二、问题 1.iperf参数有哪些 2.iperf如何二进制安装 (1)主机 表1-1 主机 主机 架构 组件 IP 备注 prometheus 监测 系统 prometheus、node_exporter  192.168.204.18 grafana 监测GUI grafana 192.168.204.19 agent  监测 主机 node_exporter 192.168.204.20 (1)

    2024年02月03日
    浏览(51)
  • PHP Smarty如何进行调试和错误处理?

    欢迎来到PHP Smarty的世界。如果你在这里寻求如何调试和错误处理的方法,那么我可以向你保证,我们会让这个过程尽可能的有趣和轻松。 首先,让我们先来谈谈调试。在Smarty中,你可以使用以下几种方法来进行调试: 使用Smarty的debug模式 当debug模式打开后,Smarty会在页面底

    2024年02月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包