閱讀703 返回首頁    go 阿裏雲 go 技術社區[雲棲]


PHP在瀏覽器上跟蹤調試的方法以及使用ChromePhp、FirePHP的簡單介紹

之前用ThinkPHP時發現有個 trace 函數可以跟蹤調試,感覺很有意思,網上搜索了下類似的東西,發現了 ChromePhp ,以前沒想過這樣來調試 PHP 程序,感覺非常方便,很有用。

ThinkPHP 使用的是自己生成的 HTML 隨模版一起輸出來顯示,偶爾會遇到一些莫名其妙的問題,效果不是太好,

還有一些也是類似的方法,但輸出的主要是在模版中增加 JS 代碼,調用瀏覽器的調試方法進行輸出調試

如 console.log('PHP的一些調試輸出內容');


ChromePhp 是通過header來傳輸調試內容並通過安裝 Chrome 瀏覽器的插件讀取header 信息顯示到瀏覽器調試麵板中進行查看,功能比較強大,對頁麵沒什麼太多幹擾,調試也更方便,火狐下據說也有類似的 firePhp ,不過現在不怎麼用火狐瀏覽器也沒去測試過


官網地址:

https://www.chromelogger.com/


這是該開源項目的 Github 地址:

Github : https://github.com/ccampbell/chromephp


這是 Chrome 內核瀏覽器插件的安裝地址:

https://chrome.google.com/extensions/detail/noaneddfkdjfnfdakjjmocngnfkfehhd

不過老是被牆,不容打開,而且隻能是 google chrome 才能安裝,我找了老半天隻找到個 3.0 的插件

插件下載地址:

https://download.csdn.net/detail/zsjangel/7535201

可以安裝後試試 升級到現在最新的 4.1,我是這樣成功了的


3.0 的插件圖標和 4.1 的不一樣的:




下麵是4.1版本,黑色表示為開啟插件,點擊啟動




下方顯示藍色時表示啟動,可以在麵板中看到調試信息





PHP下的使用方法:

ChromePhp::log('Hello console!');
ChromePhp::group('this is group');
ChromePhp::log('Hi 神神的蝸牛!');
ChromePhp::error('something went wrong!');
ChromePhp::groupEnd();
ChromePhp::table(array(array('aa'=>'bb', 'cc'=>11), array('aa'=>'cc', 'cc'=>22)));


group 表示默認直接展開下麵的所有都是一組調試信息,一直到 groupEnd 結束,顯示效果和普通的 log 是不一樣的


若使用 groupCollapsed 則默認收縮不顯示整個 group 信息


table 的參數必須是 二維數組,否則將不顯示,數組的鍵名及字段名


下麵是效果圖:





---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


剛剛又試了 firefox 下的 FirePHP 插件,他們的功能都很類似,但 FirePHP 比 ChromePHP 更熱門些,也不會被牆安裝很方便,後者的 github 項目似乎一年沒有維護更新了,也可能是沒什麼可更新了的吧,不過 firefox 和 Chrome 瀏覽器比起來,後者應該使用的人更多了吧。


FirePHP 官方主頁:(下載 PHP 端類庫)

https://www.firephp.org/HQ/Install.htm


安裝插件就不用說了吧,附加組件裏麵搜索下 FirePHP 就行了很方便,必須依賴 FireBug,最好先安裝 FireBug 再安裝 FirePHP





PHP簡單測試代碼:

		$fire = FirePHP::init();
		$fire->log('Hello console!');
		// Collapsed:true 收起該組調試信息
		$fire->group('this is group', array('Collapsed'=>true));
		$fire->log('Hi 神神的蝸牛!');
		$fire->error('something went wrong!');
		$fire->groupEnd();
		$fire->table('數據表', array(array('aa'=>'bb', 'cc'=>11), array('aa'=>'cc', 'cc'=>22)));


效果:




他們的原理也都一樣,使用方式上基本上差不多的,大概就是這樣啦

最後再來一個 header 傳輸調試信心的對比:






FirePHP 在輸出時應該會判斷當前瀏覽器,非 Firefox 不會輸出 header 信息,而 ChromePHP 則未判斷都是直接輸出




---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最後更新:2017-04-03 07:57:12

  上一篇:go JAVA線程中的生產者和消費者問題
  下一篇:go Java中線程封閉之ThreadLocal