>백엔드 개발 >PHP 튜토리얼 >느린 로그 분석 도구 v 10

느린 로그 분석 도구 v 10

WBOY
WBOY원래의
2016-08-08 09:18:561124검색
<?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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.