php切分nginx apache日志大文件


php切分nginx apache日志大文件
查找相关文章:php nginx apache

1个2G的nginx日志文件,切分成50万行一个文件,单个时间消耗只有0.2秒


<?php
set_time_limit(0);
function get_line( $file_name , $start , $limit ) {
	$fp = fopen($start.'.log','w+');
	$f = new SplFileObject( $file_name,'r');
	$f->seek( $start );
	$total = 0;
	for( $i = 0 ; $i < $limit ; $i++ )
	{
		$ret = $f->current();
		fwrite($fp,$ret);
		$f->next();
		$total++;
	}
	fclose($fp);
	return $total;
}

$file_name = $_SERVER['argv'][1];
$start = $_SERVER['argv'][2];
$limit = $_SERVER['argv'][3];

$start_time = microtime();
$total = get_line($file_name,$start,$limit);
$end_time = microtime();

echo 'Total:'.$total,' Time:'.($end_time-$start_time);