php 线上排查问题方法

情景:已上线的项目突然出现了一点小问题,但你又看不出原因,怎么办呢,也不能直接输出终止程序运行逐步排错,在这里给你推荐一些方法:

方法1:

通过浏览器控制台输出接口

/**
 * 控制台输出  可以把这个代码放在公共文件,可以在任意地方调用
 * @param $var
 * @param string $level
 */
function console($var,$level = 'debug')
{
    if(is_array($var) || is_object($var)){
        if (is_array($var)){//兼容 Yii2.0 查詢表 数组对象的方式 开始
            $yii_arr = [];
            foreach ($var as $key => $value ){
                if (is_object($value)){
                    $new_value = $value->toArray();
                    $yii_arr[] = $new_value;
                }
            }
        }
        if ($yii_arr){
            $var = $yii_arr;
        }//兼容 Yii2.0 查詢表 数组对象的方式 结束
        $output = json_encode($var,JSON_UNESCAPED_UNICODE);
        $jsonDecode = json_decode($output,true);
        if(empty((array)$jsonDecode) && !empty($var)){
            echo "<script>console.{$level}('不支持输出')</script>";
            return;
        }
    }elseif(is_string($var)){
        $output = '"'.$var.'"';
    }else{
        $output = $var;
    }

    echo "<script>console.{$level}({$output})</script>";
    return;
}

把这段代码放到你的文件中,要打印什么,就可以了

console($arr);

案例:
console(6)

谷歌浏览器展示,其他浏览器可能看控制台的方式有些查询
结果:

 方法2:
做log日志

函数:file_put_contents

语法

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
参数描述
file必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data必需。规定要写入文件的数据。可以是字符串、数组或数据流。
mode可选。规定如何打开/写入文件。可能的值:
  • FILE_USE_INCLUDE_PATH
  • FILE_APPEND
  • LOCK_EX
context可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

$any_value 任意类型的值

file_put_contents("log-01.txt", print_r($any_value,1).PHP_EOL, FILE_APPEND);

 方法3:

debug 变量,可以自定义

在 URL 传递一个参数比如 debug=1 或者直接识别用户来判断是否进入调试模式,也可以把异常信息打印到日志里面 或者 直接打印当前面页面也行。

方式1,相对直白,结果直接能在浏览器上面展示,但是可能会存在某些无知数据类型情况没值输出,数据安全低

方式2,任意类型的值都能打印出来,是日志的结果只能在服务器上面文件里面看到结果。查看结果比较麻烦些,数据安全高。

方式3 操作简单。但是数据会再当前的页面的展示出来

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值