php快速调试接口执行慢如何定位,php 如何快速定位问题 关于debugtrace 的用法

php 快速定位问题debugtrace 的用法。各位小伙伴大家好。

详细请看下面的代码,下面的代码讲述了在一个分片取模写缓存的例子里面如何跟踪堆栈。

/**

* 统计 uid 的调用情况

* @param type $uid

* @param string $key

*/

private function tongji($uid,$key){

// 取出原来的属性

$key = $key. "_" . $uid;

$r = $ this ->cache->hget( "untreated:msg_tongji" ,$key);

$num = 0 ;

if (! empty ($r)){

$r = json_decode($r,TRUE);

$num = intval($r[ 'num' ]);

$num++;

$arr = array ( 'num' =>$num);

} else {

$arr = array ( 'num' =>$num);

}

$arr = json_encode($arr,JSON_UNESCAPED_UNICODE);

$ this ->cache->hset( "untreated:msg_tongji" ,$key,$arr);

$ this ->log($uid, array ( 4053 ),$num);

}

/**

* 统计分析特定 uid 的上层调用 .

*

*/

private function log($uid,$arr,$num){

// 必须在数组里面,根据取模来控制日志写入量

if (in_array($uid, $arr) && $num % 1000 == 0 ){

$html = $ this ->debug();

logDebug( "uid:" . $uid. "  " . $html, 'untreated:msg_log' );

}

}

private function debug(){

$ array =debug_backtrace();

unset ($ array [ 0 ]);

$html = '' ;

foreach ($ array as $row)

{

$html . =$row[ 'file' ]. ':' . $row[ 'line' ]. ' 行 ,' . '   调用 :' . $row[ 'class' ]. '->' . $row[ 'function' ]. '(' . json_encode($row[ 'args' ]). ")\n" ;

}

return $html;

}

3c2498ae2fd026894b1ad0eb83d641ec.pngenjoy it.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值