Yii2 Debug初探(精选)

PHPer 2023-07-12 237 0 0

在初步理解了Yii2 Log的运行原理后,就可以通过yii2-debug的源码探索如下几个问题:

(1)debug组件何时初始化?

(2)页面底部的Debug工具条是在何时怎样渲染的?

(3)Debug工具条进入不同板块的详情页时,各个板块的内容是从哪里来的?何时记录的?

(4)Db板块如何实现对query的性能分析?

1.Yii2 Debug简版类结构

84c1a8a67f_normal.png

(1)yii\debug\Module是Debug模块核心类,这里定义了Debug模块可以配置的属性信息以及模块初始化方法:

1)访问控制信息$allowedIps与$allowedHosts;

2)Debug模块包含的内容板块由corePanels()返回,板块属于yii\debug\Panel类型,负责展示不同的日志信息;

3)bootstrap()是Debug模块的初始化关键。Debug模块在配置文件中被添加到了yii\base\Application的$bootstrap属性中,这里的模块或组件会在应用初始化时被实例化,同时由于Debug模块实现了BootstrapInterface接口,所以应用初始化时,Debug模块的bootstrap()方法就会被调用。这时主要做了三件事:

第一:实例化Debug模块的$logTarget,并添加到Yii::$app->getLog()->targets['debug']中,这样便可以在日志分发组件(Yii::$app->getLog())分发日志消息时拿到系统记录的所有日志信息;

第二:绑定渲染Debug工具条的事件处理函数,给View::EVENT_END_BODY事件追加一个处理方法renderToolbar(),这里渲染我们看到的页面底部的Debug工具条;给Response::EVENT_AFTER_PREPARE事件追加处理方法setDebugHeader();

第三:将Debug模块关联的路由重写规则添加到UrlManager的规则中,以适应应用开启路由重写的场景。

4)renderToolbar()会在View::EVENT_END_BODY事件触发时执行,将Debug工具条追加到视图页面的内容之后,到这里才知道页面底部的Debug工具条是何时渲染的。

(2)yii\debug\LogTarget是Debug模块的$logTarget成员变量所属类别,它与yii\log\FileLog等具体Target一样均继承自yii\log\Target。这样一来,Debug的$logTarget就能够接收到log组件派发的所有日志消息,到这里才知道Debug模块显示的日志内容是从哪里来的。

1)在yii\debug\Module的bootstrap()方法中首先会实例化yii\debug\LogTarget,这时会把当前yii\debug\Module对象自身赋给yii\debug\LogTarget的$module,把yii\debug\Module的$tag值赋给yii\debug\LogTarget的$tag;

2)collect()方法将yii\log\Dispatcher(即log组件)派发的日志消息照单全收入$messages成员变量,并在特定的时机(即flush(true)调用时,这被yii\log\Logger构造函数注册为shut down方法)调用export()方法将这些日志消息导出到特定目标;

3)export()方法会将LogTarget记录的$messages导出到指定目录的debug日志文件,这一目录在yii\debug\Module的$dataPath中指定。导出步骤主要有四步:

第一:创建$tag值同名data文件;

第二:整理要存入data文件的日志内容:首先整理summery内容,然后通过调用每个关联Panel的save()方法,整理出$module对象的所有板块对应的数据内容;...

立即注册
更新于:2023-07-12 21:48:03
    您需要登录后才可以评论。 立即注册
    相关内容

    Yii2 报错代码整理

    Yii2 HeadersAlreadySentException 报错

    Yii2报错 Object configuration must be an array containing a "class" o...

    Yii2模型简介

    Yii2模型简介-属性

    Yii2模型简介-场景

    Yii2模型简介-验证规则

    Yii2模型简介-块赋值

    Yii2模型简介-非安全属性

    Yii2模型简介-数据导出

    Yii2模型简介-字段

    Yii2模型简介-最佳实践

    Yii2小部件Widget

    Yii2的扩展整理

    【坑,勿用】Yii的yii-xunsearch扩展,支持中文的搜索引擎,支持全文索引全...

    简单,易用的yii2导入和导出组件( illusion/yii2-excel)

    最完整的安装教程-Yii Gridview小部件之kartik-v/yii2-grid扩展的安装和使...

    推荐内容

    分享几个好用的bt搜索bt资源下载网址网站

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享

    全网最新bt磁力搜索引擎bt资源bt网站网址分享

    人气美女女优百度指数排行榜(波多野结衣,苍井空,三上悠亚,深田咏美,桥本有菜,北条...

    最强人造人深田咏美,业界的社交女王

    人生起起落落的三上悠亚,成名前的清纯风,怎么搭配出来的?

    业内第一大长腿,桥本有菜的腿究竟有多长

    波多野结衣,岛国业界著作最多的超级劳模

    日本AV界NO.1,苍井空是多少宅男的疯狂?

    美女女优视频混剪 This Girl-Laza Morgan

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享