系统开发中 经历了各种的代码迭代,可能内核还是很早之前的自研内核。后期加了微服务,负载均衡多服务多服务器,前后端分离各种的开发修改,有些接口没有遵循REST API的标准,有些接口没有使用公共的对外函数来打印返回值。各种的问题,最近我们在加设备系统的日志,发现老旧的系统各种问题,有的接口直接使用echo来打印返回值,这个时候如果做日志的话要抓取返回值就有点难度了,所以查了下文档,发现了ob_start这个Output Control 函数,可以捕获输出值,是直接捕获,最近在用,具体的函数的效率还需要后期UAT和生产中测试下,再给出:
函数的说明网址:https://www.php.net/manual/zh/function.ob-start.php
官方的说明是:
因为返回值都已经使用REST API 的规范来进行格式束缚并且转成了json格式,所以在捕获后的操作和验证也就不需要做太多,如果大家的接口不规范可以做下json的验证;这个了就不做展开,后期有时间我们再讲这块,这块如果不讲全的话坑还是比较大的。
如果只是捕获不对输出的值做操作的话在应用结束的时候使用函数ob_get_contents
就可以了。如果需要操作的话可以先ob_clear清理输出,然后再输出处理后的数据{需要主要这个捕获的地方,如果是公共class进行捕获的,操作的时候需要注意下不会的数据格式和处理后的数据格式的统一等等}