我一直在寻找一种更快的方法来完成日志文件的添加。以下是我所知道的当前两种方法。我还尝试了正常添加文件,然后反向读取文件以显示,但是(未经测试)我认为,一旦文件达到合理大小,这将需要更长的时间。挂起日志文件最快的方法是什么?
$start1 = microtime(true);
log1();
$end1 = microtime(true);
$start2 = microtime(true);
// log2();
$end2 = microtime(true);
$t1 = $end1-$start1;
$t2 = $end2-$start2;
function log1(){
$stamp = date("Y-m-d @ h:i:sa");
$data = ($stamp." this has been a test of 1");
$data .= file_get_contents('./test.log');
file_put_contents('./test.log', "\r\n\r\n".$data);
}
编辑:更新了log2()
function log2(){
$stamp = date("Y-m-d @ h:i:sa");
$write = $stamp.'this has been a test of 2'.PHP_EOL;
$file = './test.log';
$handler = fopen($file, 'r+');
$len = strlen($write);
$final_len = filesize($file)+$len;
$cache_old = fread($handler, $len);
rewind($handler);
$i=1;
while(ftell($handler) < $final_len){
fwrite($handler, $write);
$write = $cache_old;
$cache_old = fread($handler, $len);
fseek($handler, $i * $len);
$i++;
}
fclose($handler);
}