slowlog分析工具 v 1.0
2015-08-05 16:02
295 查看
<?php /** * slowlog分析工具 v 1.0 * */ if( $argc < 2 ){ $help.= "Help:" .PHP_EOL; $help.= " slowlog.php [option]" .PHP_EOL; $help.= " -f log file path.".PHP_EOL; $help.= "e.g : php slowlog.php -f slow.log".PHP_EOL; exit($help); } $file = $argv[2]; $logs = loadFile( $file ); $stats = array(); echo "Slow log:" . PHP_EOL; foreach($logs as $key => $logsArr){ echo "---------------------------{$key}-------------------------------" .PHP_EOL; foreach($logsArr as $k => $v){ echo $k . " [num : ".count($v)."]" .PHP_EOL; foreach ($v as $phpfile){ $n = explode(":",$phpfile); $s = explode(" ",$n[0]); if($s[2] && $s[2] != 'unknown' && $s[2] != 'dump'){ // echo "======> " . $s[2] . "[ Line: {$n[1]}]". PHP_EOL; $md5_key = md5($s[2].$n[1]); if(array_key_exists($md5_key,$stats[$key])){ $stats[$key][$md5_key] = array( 'main'=>$k, 'file'=> $s[2], 'line'=> $n[1], 'code'=> $s[1], 'num'=> $stats[$key][$md5_key]['num'] + 1 ); } else { $stats[$key][$md5_key] = array( 'main'=>$k, 'file'=> $s[2], 'line'=> $n[1], 'code'=> $s[1], 'num'=>1 ); } } } } } echo PHP_EOL; echo PHP_EOL; echo PHP_EOL; echo "Create json file: slowlog.json" . PHP_EOL; file_put_contents('slowlog.json',json_encode($stats)); echo "Success!" . PHP_EOL; echo "http://tool.lu/json/"; function loadFile( $file ){ $str = file_get_contents($file); $arr = explode("\n",$str); $g = 0; $data = array(); foreach($arr as $val){ if( $val ){ $data[ $g - 1][] = $val; } else { $g++; } } $logs = array(); foreach( $data as $key => $log){ foreach($log as $k => $l){ $time = $data[$key][0]; $phpfile = $data[$key][1]; $p = "#\[(.*?) (.*?)\] \[(.*?)\] pid (.*?)#"; preg_match($p,$data[$key][0],$arr); $time = $arr[1]; if( $data[$key][0] != $l ){ if( $phpfile != $l ){ $logs[ $time ][$phpfile][] = $l; } } } } return $logs; }
切记: 在使用此工具的时候,请先把slowlog功能关闭,不然会造成502错误(文件读写冲突)
相关文章推荐
- 【UVA10405】【裸LCS】
- 【数据库】 Section One
- chdir & getcwd
- 黑马程序员_Java基础:多线程总结
- eq相等 ne、neq不相等, gt大于, lt小于 gte、ge大于等于 lte、le 小于等于 not非 mod求模 等
- UIWebView
- SVG矢量图形课程基础入门篇
- BZOJ 4143 The Lawyer
- 连通图(强连通分支)
- [LeetCode] Shortest Word Distance
- 编译boost
- php为图片添加水印
- 设置secureCRT中vim的字体颜色
- leetcode 74: Search a 2D Matrix
- Multiplying by Rotation
- 关于在Windows7 64位操作系统下,读取system32下的文件失败,提示“系统找不到指定文件”。
- Multiplying by Rotation
- Android adb的一些使用方法
- Codeforces 115A- Party
- python eval函数 动态执行python语句