php 最大文件,php读取大文件最好的实现方法
php讀取大文件方法我們一般是一行行來講取而不是一次性把文件全部寫入內存中了,這樣會導致php程序卡死,下面給大家整理一個例子。
| ?代碼如下 | 復制代碼 |
讀取大文件最后幾行數據: /** * 取文件最后$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)); /**? * 取文件最后$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)); function tail($fp,$n,$base=5) { assert($n>0); $pos = $n 1; $lines = array(); while(count($lines)< =$n){ try{ fseek($fp,-$pos,SEEK_END); } catch (Exception $e){ fseek(0); break; } $pos *= $base; while(!feof($fp)){ array_unshift($lines,fgets($fp)); } } return array_slice($lines,0,$n); } var_dump(tail(fopen("access.log","r "),10)); $fp = fopen($file, "r"); $line = 10; $pos = -2; $t = " "; $data = ""; while ($line > 0) { while ($t != "n") { fseek($fp, $pos, SEEK_END); $t = fgetc($fp); $pos --; } $t = " "; $data .= fgets($fp); $line --; } fclose ($fp); echo $data | |
總結
以上是生活随笔為你收集整理的php 最大文件,php读取大文件最好的实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 搜索名称或者编号,ECSHOP商
- 下一篇: matlab中jet的例子,Python