经常因为出现紧急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调试信息相关推荐

  1. php语法中可以输出调试信息,怎么优雅的输出PHP调试信息

    如何优雅的输出PHP调试信息 经常因为出现紧急bug而被老板骂的同事,为了更快的修复而直接利用线上的错误环境现场debug,并直接在页面上echo和dump.结果被老板发现了,又是一通臭骂.那么有没有 ...

  2. 如何查看Linux内核输出的调试信息

    第一点需要澄清:我使用的环境是嵌入式Linux,并非桌面版Linux,查看内核输出的调试信息也是为了追踪内核子系统的运行.这可能是一个非常小的知识点,但是还是希望自己记录一些东西,以后也好拾起. 本文 ...

  3. Android打包APK后禁止通过DMMS的Logcat查看程序输出的调试信息

    因为app安全检测"应用程序调试信息泄露敏感数据"一项不过关,需要禁止调试日志的输出,后来找到了关闭Log日志的方法,经过测试同样适用于System.out.println等很好用 ...

  4. C#单元测试如何查看输出的调试信息?

    在Visual Studio  2012的单元测试中使用: Console.WriteLine()输出的信息在"输出"面板都找不到??? ​查了不少资料,才得知在单元测试中打印的信 ...

  5. VC调试信息输出 TRACE宏

    TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能:该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代 ...

  6. DebugView输出调试信息

    在写windows程序时,需要输出一些调试信息,这里介绍一种极其方便的方法.即使用OutputDebugString 在Debug模式下输出调试信息,在Release模式下不输出. 我们可以在VS的集 ...

  7. repr函数输出调试信息

    repr函数输出调试信息 1.概述 repr函数可以辅助我们输出调试信息,下面介绍下他的一些用法 2.repr函数使用 2.1.repr函数输出变量类型 使用print输出调试信息时候,不会输出变量的 ...

  8. 你知道怎么使用DebugView查看调试信息吗?

    简介 DebugView是sysinternals工具集中的一款用来查看调试信息的工具.不管你是内核开发人员还是应用程序开发人员,都会用到这款神器.先简单看看DebugView可以干什么吧. 可以查看 ...

  9. GCC 生成的符号表调试信息剖析

    GCC把C语言源文件('.c')编译成汇编语言文件('.s'),汇编器把汇编语言文件翻译成目标文件('.o'),最后由链接器链接所有的目标文件和有关的库生成可执行文件('a.out'). 如打开'-g ...

  10. am335x UART1输入u-boot 调试信息代码修改

    AM335x 调试信息UART1输出代码修改 1. 关于pin_mux  的配置 代码修改位置: /board/forlinx/ok335x/mux.c 1 void enable_uart0_pin ...

最新文章

  1. CentOS7系统ifconfig无法使用的解决方法
  2. bootstrap-select实现下拉框多选效果
  3. java输入流读取几行文本_Java基础笔记Day_16
  4. MII/MDIO接口详解(转)
  5. backtrader期权回测框架
  6. 技术沟通者的自我修养
  7. 华为MatePad Pro 5G平板正式发布:售价5299元起!
  8. docker network 网络模式
  9. Shell脚本学习-阶段十三-在 Linux 中使用日志来排错
  10. puppet安装与使用--模块结构(iptables与rsync模块)
  11. 2020公务员考试应届毕业生的身份界定
  12. FHIR标准和国际基于FHIR的互联互通实践(1):如何定义互联互通?
  13. 电子工程师 嵌入式开发者的嘉年华最强攻略
  14. 1、51单片机——郭天祥课后习题解答
  15. boost斩波电路控制系统C语言,Boost升压斩波电路[精华]
  16. 抖音如何接入在线客服系统?
  17. playhome的php文件怎么导入,PLAY HOME家族崩坏Importor模型导入插
  18. 小白必看 APN/证书/越狱等名词详解
  19. EVE-ng模拟器安装教程和使用教程
  20. 【JAVAWEB开发】带你零基础学JAVA项目(二嗨租车项目篇)

热门文章

  1. nginx中的共享内存的3种方式
  2. java web 调度_javaweb车辆调度信息管理平台
  3. 【渝粤教育】国家开放大学2019年春季 2083信息技术与教育技术(2) 参考试题
  4. [渝粤教育] 西南科技大学 英语语法2 在线考试复习资料
  5. 伯克利,斯坦福,宾大联合发表:从观察和交互中学习预测模型
  6. 控制系统数字仿真与CAD-第四次实验-附完整代码
  7. windows下使用mahout|Taste实现协同过滤算法
  8. Python基础:字典(dict)与集合(set)
  9. 2018-2019-1 20189221 《构建之法》第 3 周学习总结
  10. bug-箭头函数中this指向的问题