【yii2调试神器】yii2-debug能力分析和配置项解析
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能力分析和配置项解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网曝 Solaris 系统被砍,开发团队
- 下一篇: nodejs链接kafka示例(prod