php读取大文件最好的实现方法
来源:易贤网 阅读:1414 次 日期:2014-08-21 17:00:35
温馨提示:易贤网小编为您整理了“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

更多信息请查看IT技术专栏

更多信息请查看网络编程
易贤网手机网站地址:php读取大文件最好的实现方法
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标