/*
PHP 讀取文件的方式
*/
function getfile1($file,$n=1) { $data = array(); $t = ''; $pos = -2; $size = filesize($file); $fp = fopen($file,"r"); if(!$fp){ echo '文件打開失敗'; exit; } while(count($data) < $n){ if(abs($pos) >= $size){ break; } while($t != "\n"){ fseek($fp,$pos,SEEK_END); $t = fgetc($fp); $pos--; } $t = ''; $data[] = fgets($fp); } return $data; }
function getFile2($file,$n){ $data = array(); $base = 5; $pos = -$n; $fp = fopen($file,"r"); if(!$fp){ echo '文件打開失敗'; exit; } while(count($data) < $n){ $pos = $pos*$n*$base; fseek($fp,$pos,SEEK_END); while(!feof($fp)){ $c = fgets($fp); $data[] = $c; } } krsort($data); return array_slice($data, 0, 10); }
$data1 = getfile1('c.log',10); $data = getfile2('c.log',10); echo '<pre>'; print_r($data); print_r($data1);