<?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; }
저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.
위 내용은 슬로우로그 분석 도구 v10에 대한 관련 내용을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.