VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php读取大文件最好的实现方法

php读取大文件方法我们一般是一行行来讲取而不是一次性把文件全部写入内存中了,这样会导致php程序卡死,下面给大家整理一个例子.

读取大文件最后几行数据:

  1. /** 
  2.  * 取文件最后$n行 
  3.  * @param string $filename 文件路径 
  4.  * @param int $n 最后几行 
  5.  * @return mixed false表示有错误,成功则返回字符串 
  6.  */ 
  7. function FileLastLines($filename,$n){ 
  8.     if(!$fp=fopen($filename,’r')){ 
  9.         echo ”打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文”; 
  10.         return false; 
  11.     } 
  12.     $pos=-2; 
  13.     $eof=”"; 
  14.     $str=”"; 
  15.     while($n>0){ 
  16.         while($eof!=”n”){ 
  17.             if(!fseek($fp,$pos,SEEK_END)){ 
  18.                 $eof=fgetc($fp); 
  19.                 $pos–; 
  20.             }else
  21.                 break
  22.             } 
  23.         } 
  24.         $str.=fgets($fp); 
  25.         $eof=”"; 
  26.         $n–; 
  27.     } 
  28.     return $str
  29. echo nl2br(FileLastLines(‘sss.txt’,4)); 
  30. /**  * 取文件最后$n行  * @param string $filename 文件路径  * @param int $n 最后几行  * @return mixed false表示有错误,成功则返回字符串  */ function FileLastLines($filename,$n){     if(!$fp=fopen($filename,'r')){         echo "打开文件失败,请检查文件路径是否正确,路径和文件名不要包含中文";         return false;     }     $pos=-2;     $eof="";     $str="";     while($n>0){         while($eof!="n"){             if(!fseek($fp,$pos,SEEK_END)){                 $eof=fgetc($fp);                 $pos--;             }else{                 break;             }         }         $str.=fgets($fp);         $eof="";         $n--;     }     return $str; } echo nl2br(FileLastLines('sss.txt',4)); 
  31. //开源软件:phpfensi.com 
  32. function tail($fp,$n,$base=5) 
  33. assert($n>0); 
  34. $pos = $n+1; 
  35. $lines = array(); 
  36. while(count($lines)< =$n){ 
  37. try{ 
  38. fseek($fp,-$pos,SEEK_END); 
  39. } catch (Exception $e){ 
  40. fseek(0); 
  41. break
  42. $pos *= $base
  43. while(!feof($fp)){ 
  44. array_unshift($lines,fgets($fp)); 
  45. return array_slice($lines,0,$n); 
  46. var_dump(tail(fopen("access.log","r+"),10)); 
  47. $fp = fopen($file"r"); 
  48. $line = 10; 
  49. $pos = -2; 
  50. $t = " "
  51. $data = ""
  52. while ($line > 0) { 
  53. while ($t != "n") { 
  54. fseek($fp$pos, SEEK_END); 
  55. $t = fgetc($fp); 
  56. $pos --; 
  57. $t = " "
  58. $data .= fgets($fp); 
  59. $line --; 
  60. fclose ($fp); 
  61. echo $data
  62.  

出处:http://www.phpfensi.com/php/20150410/9165.html


相关教程