2019独角兽企业重金招聘Python工程师标准>>>

我们采用一问一答的方式,先来制定整个专题的情景,本次阿北去一家叫做“千度”的互联网公司应聘yii2工程师,故事就在面试中。

角色介绍:

  • 我 靠颜值走天下。
  • 面试官老李 带着眼睛的中年男人

你给我说说yii2-debug是个什么东西?

面对这样的问题,我再一次思考,yii2-debug到底能干点啥?对于一个yii2的扩展,它实现不了像xdebug那样强大的断点功能,但是因为它来自于yii2,因此它能用最简单的数据展示给你想要的东西,比如yii2每步都加载了什么模块、都运行了哪些SQL语句、捕获当前会员信息等等

相对比一行行看代码,这才是我们需要的。

  • 全面# yii2-debug能让你快速知道当前yii2版本、php版本、Http响应状态、当前的控制器和action、内存占有量等等,实在是务必强大的小强。
  • 管事儿多# 通过Configuration面板可以快速查看当前yii2程序和PHP环境的配置,再也不用phpinfo()了。
  • F12# 不用使用F12了,通过Request面板能够知道本次请求了的Headers、参数、相应数据以及SESSION会话等等。
  • 无处不在# 能展示系统带的和你自己写的log记录,更好的是会告诉你某个日志来自于哪个文件的哪行。
  • 性能分析# 通过Profiling为你展示程序运行时间以及内存占有、还有详情和曲线哈。优化代码必备。
  • SQL# 一个页面用了哪些SQL语句,具体的不要不要的,Database面板通通展示给你。
  • 资源我也管# Asset Bundles轻松的帮你分析出一个页面加载的资源类。
  • 登陆不登录# User面板帮你展示当前登陆会员的信息,方便你分析一些授权相关数据。
  • 路由分析# 当你对URL进行重写的时候,Route面板实在是你诊断路由的最佳助手。

然后那?

面对老李这样的发问,我大脑飞速,难道是我说的还不够么?哦,还有,yii2-debug支持扩展能力,比如我们团队可以开发一个专门用于我们自己的debug面板。

另外还有整合能力,yii2-debug能和PHPSTORM进行无缝整合。

我知道的就是这些。

老李不动表情的说了句:“好吧,这个问题先这样,在问你一个小学三年级水平的问题”。

我们都知道yii2-debug是在web.php配置,而其本身就是一个模块而已,你给我说说web.php都哪些项可能对yii2-debug有影响。

丫的,有本事你就整四年级的,这是考我yii2-debug配置问题啊,幸好哥之前做了功课。

的确,yii2-debug是一个模块,因此我们也可以通过/index.php?r=debug来访问它,我们先看看在web.php中yii2-debug的配置。

从代码我们能知道以下几件事情

  • yii2-debug是需要预加载的
  • yii2-debug能进行权限限制,比如只能本地或某个ip访问,这个gii差不多。

特别说下预加载吧,我们都知道yii可以做到需要一个模块的时候再调用,这也是yii性能很高的原因之一,但是yii2-debug作为一个整个yii2程序的调试扩展,它必须要在程序开始那一刻就加载进来。

如果你不信,可以看下yii2-debug的log面板,我截图给你。

yii2预加载的库并不多,开发模式下就log、yii2-debug、gii,生成环境下只有log一个而已,预加载完以后,才有路由解析等等。

另外一个地方会对yii2-debug有影响,就是日志的traceLevel问题,我们之所以能在yii2-debug的Log面板看到每个日志的出处,都是因为在web.php下有如下配置

'log' => ['traceLevel' => YII_DEBUG ? 3 : 0,'targets' => [['class' => 'yii\log\FileTarget','levels' => ['error', 'warning'],],],
],

就是其中的

'traceLevel' => YII_DEBUG ? 3 : 0,

3表示每一条日志记录都会记录与之相关的三层栈调用信息,0表示不记录任何相关的栈调用信息,在开发模式下,traceLevel为3,因此你看到了日志的出处。

当然这一切并不用我们配置,系统默认就是这样,而当我们部署程序到生产环境,traceLevel会自动因为Yii_DEBUG==false而变为0,不会发生性能上的损耗。

如果你忘记了,那还挺耗资源的。

最后要说明下面代码

if(YII_ENV_DEV){//使用yii2-debug
}

这里面的 YII_ENV_DEV 其实是一个bool型,它由判断 YII_ENV === 'dev' 而来,而YII_ENV就在你的yii2入口文件index.php中。

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');// dev 和 prod

因此,当你部署yii2到生产环境那一刻,请修改上面代码为

defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');

则一切安好。

?????

然后那?

“不错不错” 老李稍微点点头,然后说道:“这些都是皮毛,我先去趟wc,一会回来继续。”

好吧....肾不好的人都要常去洗手间,故事刚刚开始,下一篇为你讲解老李wc后那精彩万分的小强yii2-debug绝杀技和老李前列腺的问题。

转载于:https://my.oschina.net/abei2017/blog/914784

【yii2调试神器】yii2-debug能力分析和配置项解析相关推荐

  1. UI调试神器 for ios:Reveal的使用与破解

    移动开发这一块做的最多的无疑就是UI和交互,而UI调试也是移动开发人员经常干的一苦逼事.虽然目前iOS开发工具Xcode集成了UI调试功能(Debug View Hierarchy),但带给我们的却只 ...

  2. json.tojsonstring 导致cpu飙高_阿里调试神器立功了!进程导致Kubernetes节点CPU飙高的排查与解决...

    来源:https://www.cnblogs.com/maxzhang1985/p/12673160.html 一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问 ...

  3. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. python 如何边改代码边调试_Python 代码调试神器:PySnooper

    给大家推荐本我自己写的电子书<PyCharm中文指南>,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来.有兴趣的可以看它的在线文档: http://pycharm.i ...

  5. 微信公众号(移动端网页)必备的调试神器

    1.移动端调试神器vConsole 由于在移动端无法打开控制台,所以想办法打印调试console的数据一直苦恼.之前用的是chrome的inspect调试,但是只能使用移动版的chrome查看数据,兼 ...

  6. 嵌入式调试神器-虚拟示波器之JScope

    调试神器-虚拟示波器之JScope 在进行嵌入式开发过程中,需要查看某些实时变化的变量,以MDK为例我们通常都是进入DEBUG模式下去肉眼观察,这种方式不太人性化,也比较容易错失掉许多细节.为此我介绍 ...

  7. 中国乙二醇型汽车防冻液市场运营能力分析与投资战略规划研究报告2022-2028年版

    *章 中国乙二醇型汽车防冻液行业发展状况综述15 *节 中国乙二醇型汽车防冻液行业简介15 一.乙二醇型汽车防冻液行业的界定及分类15 二.乙二醇型汽车防冻液行业的特征15 三.乙二醇型汽车防冻液的主 ...

  8. Vue调试神器vue-devtools - 插件下载安装

    文章目录 Google如何安装调试Vue的神器`vue-devtools` ? 安装介绍: demo实例 - 演示代码: 相关文章链接: 1. https://github.com/vuejs/vue ...

  9. 团队建设管理能力分析

    团队建设管理能力分析 团队的发展和管理是需要持续不断的维护性管理和扩展性管理,维护人心.扩展专业技能.特别是测试团队,个人认为是技术和业务的关系发展扩展性很重要,测试技术是什么?无论是自动化还是性能测 ...

最新文章

  1. 样式集(八)弹窗,规则弹窗,半透明弹窗
  2. CBA 赛程的笔记 - 北京首钢
  3. android模拟器怎么与PC通信
  4. SQL Server 2008 数据库同步的两种方式 (发布、订阅)
  5. 【2021牛客暑期多校训练营5】K King of Range(单调队列)
  6. Thinkphp列表搜索排序-----查
  7. php $_SERVER详细参数解析
  8. 电商专业术语中英文对照
  9. 符号_变压器电路图符号大全
  10. 从pdf中提取图中曲线(和数据点)的方法(papa的儿子)
  11. 网站变成灰色(置灰)
  12. 由《樱桃小丸子》想到的……(未完成)
  13. 远端服务器无响应请检查网络,连接远程服务器超时请检查网络连接
  14. 解决idea打不开的两种可能性
  15. java纯真ip数据库_java实现对纯真IP数据库的查询
  16. 解决flex-direction: column 之后元素宽度自动变为100%
  17. pragma warning
  18. 台式计算机最强配置,台式电脑最好的配置单 台式电脑最好的配置单是怎样的...
  19. ecm 面向连接电子模型开发工具包
  20. sql server 修改字段长度 及 删除默认值

热门文章

  1. win8网速怎么测试软件,Windows8小技巧:查看当前网速
  2. python 文件 解析ddl_使用python中的cx_Oracle使用PL / SQL和DML / DDL解析SQL文件
  3. findall与match、search区别及小括号的注意事项
  4. linux中的和,|和||
  5. verilog case语句_浅谈Design Compiler -- Verilog语言结构到门级的映射
  6. python tkinter计算器实例_python小实例——tkinter实战(计算器)
  7. 数据结构----数组与广义表专题
  8. Spring单例的线程安全性
  9. Java导出基础 用POI导出Excel
  10. 《系统集成项目管理工程师》必背100个知识点-13项目经理是整合者