如何优雅的输出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,如果使用其它编码可能会出现未知问题,需要留意。
转载于:https://www.cnblogs.com/gidot/p/4307709.html
如何优雅的输出PHP调试信息相关推荐
- php语法中可以输出调试信息,怎么优雅的输出PHP调试信息
如何优雅的输出PHP调试信息 经常因为出现紧急bug而被老板骂的同事,为了更快的修复而直接利用线上的错误环境现场debug,并直接在页面上echo和dump.结果被老板发现了,又是一通臭骂.那么有没有 ...
- 如何查看Linux内核输出的调试信息
第一点需要澄清:我使用的环境是嵌入式Linux,并非桌面版Linux,查看内核输出的调试信息也是为了追踪内核子系统的运行.这可能是一个非常小的知识点,但是还是希望自己记录一些东西,以后也好拾起. 本文 ...
- Android打包APK后禁止通过DMMS的Logcat查看程序输出的调试信息
因为app安全检测"应用程序调试信息泄露敏感数据"一项不过关,需要禁止调试日志的输出,后来找到了关闭Log日志的方法,经过测试同样适用于System.out.println等很好用 ...
- C#单元测试如何查看输出的调试信息?
在Visual Studio 2012的单元测试中使用: Console.WriteLine()输出的信息在"输出"面板都找不到??? 查了不少资料,才得知在单元测试中打印的信 ...
- VC调试信息输出 TRACE宏
TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能:该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代 ...
- DebugView输出调试信息
在写windows程序时,需要输出一些调试信息,这里介绍一种极其方便的方法.即使用OutputDebugString 在Debug模式下输出调试信息,在Release模式下不输出. 我们可以在VS的集 ...
- repr函数输出调试信息
repr函数输出调试信息 1.概述 repr函数可以辅助我们输出调试信息,下面介绍下他的一些用法 2.repr函数使用 2.1.repr函数输出变量类型 使用print输出调试信息时候,不会输出变量的 ...
- 你知道怎么使用DebugView查看调试信息吗?
简介 DebugView是sysinternals工具集中的一款用来查看调试信息的工具.不管你是内核开发人员还是应用程序开发人员,都会用到这款神器.先简单看看DebugView可以干什么吧. 可以查看 ...
- GCC 生成的符号表调试信息剖析
GCC把C语言源文件('.c')编译成汇编语言文件('.s'),汇编器把汇编语言文件翻译成目标文件('.o'),最后由链接器链接所有的目标文件和有关的库生成可执行文件('a.out'). 如打开'-g ...
- am335x UART1输入u-boot 调试信息代码修改
AM335x 调试信息UART1输出代码修改 1. 关于pin_mux 的配置 代码修改位置: /board/forlinx/ok335x/mux.c 1 void enable_uart0_pin ...
最新文章
- CentOS7系统ifconfig无法使用的解决方法
- bootstrap-select实现下拉框多选效果
- java输入流读取几行文本_Java基础笔记Day_16
- MII/MDIO接口详解(转)
- backtrader期权回测框架
- 技术沟通者的自我修养
- 华为MatePad Pro 5G平板正式发布:售价5299元起!
- docker network 网络模式
- Shell脚本学习-阶段十三-在 Linux 中使用日志来排错
- puppet安装与使用--模块结构(iptables与rsync模块)
- 2020公务员考试应届毕业生的身份界定
- FHIR标准和国际基于FHIR的互联互通实践(1):如何定义互联互通?
- 电子工程师 嵌入式开发者的嘉年华最强攻略
- 1、51单片机——郭天祥课后习题解答
- boost斩波电路控制系统C语言,Boost升压斩波电路[精华]
- 抖音如何接入在线客服系统?
- playhome的php文件怎么导入,PLAY HOME家族崩坏Importor模型导入插
- 小白必看 APN/证书/越狱等名词详解
- EVE-ng模拟器安装教程和使用教程
- 【JAVAWEB开发】带你零基础学JAVA项目(二嗨租车项目篇)
热门文章
- nginx中的共享内存的3种方式
- java web 调度_javaweb车辆调度信息管理平台
- 【渝粤教育】国家开放大学2019年春季 2083信息技术与教育技术(2) 参考试题
- [渝粤教育] 西南科技大学 英语语法2 在线考试复习资料
- 伯克利,斯坦福,宾大联合发表:从观察和交互中学习预测模型
- 控制系统数字仿真与CAD-第四次实验-附完整代码
- windows下使用mahout|Taste实现协同过滤算法
- Python基础:字典(dict)与集合(set)
- 2018-2019-1 20189221 《构建之法》第 3 周学习总结
- bug-箭头函数中this指向的问题