php讀取大文件的方法


/*

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章