如何優雅的輸出PHP調試信息


經常因為出現緊急bug而被老板罵的同事,為了更快的修復而直接利用線上的錯誤環境現場debug,並直接在頁面上echo和dump。結果被老板發現了,又是一通臭罵。那么有沒有什么辦法更優雅的輸出PHP調試信息呢?

這里提供一個方案:利用瀏覽器調試模式的Console

1,先定義一個php函數:

 1 function console($log='')
 2 {
 3     switch (empty($log)) {
 4         case False:
 5             $out = json_encode($log);
 6             $GLOBALS['console'] .= 'console.log('.$out.');';
 7             break;
 8         
 9         default:
10             echo '<script type="text/javascript">'.$GLOBALS['console'].'</script>';
11     }
12 }

 

 

2,在需要調試的地方直接調用它,遞交的參數可以是字符串,也可以是數組。

 

3,在適當的位置調用無參數的console,用來輸出調試信息,比如各類php框架入口文件的最底部

 

4,打開瀏覽器(比如chrome),載入頁面后進入調試模式(比如按F12鍵),點擊Console,你會發現所有數據都在這里等着你查閱。

 

5,其他用途
優秀的PHP開源框架ThinkPHP提供了輸出運行狀態的功能,你可以通過運行狀態來了解某個頁面在后台處理了多長時間。但是,很多人都注意到了,它是不准確的。

下面我們試着用剛剛加進來的自定義函數console在瀏覽器中輸出真正的運行時間。
所有工作都在入口文件中完成:

在所有代碼的最開頭,定義變量$s=microtime(true);
在console();的上面再增加console('exetime:'.round(microtime(true)-$s,4));

好了,我們來看看真正的運行時間吧:

 

這個課題就這么簡單愉快的解決了。
PS:因為這個函數用到了json來輸出數組,所以要求編碼為UTF-8,如果使用其它編碼可能會出現未知問題,需要留意。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM