大数据文件读取方法
<?php $filePath = '1.txt'; $step = 1024*1024;// 1M $str = "\r\n"; $start = 0; $i = 1; $count = 0; do{ $arr = readBigFile($filePath, $step, $str,$start); $start += @$arr[1]; $i = @$arr[2]; $info = @$arr[0]; if(!empty($info)){ $count++; } }while ($i==1); echo $count; /** * file_get_contents 读取大文件方法 * @param unknown $pathA 文件路径 * @param unknown $step 每次读取的字符串长度 * @param unknown $str 分隔符 * @param unknown $start 默认从0开始读取 * return 带字符串的数组 */ function readBigFile($filePath,$step,$str,$start = 0){ $arr = array(); $info = file_get_contents($filePath,false,null,$start,$step); if($info == false){ $arr = array("",$start,0); }else{ $index = strrpos($info, $str);//分隔符最后一次出现的位置 if($info === false){ echo $str." is not a separator!"; die; } $lengthStr = strlen($str);//分隔符的长度 $start = $index+$lengthStr; $lengthInfo = strlen($info); if($lengthInfo<$step){ $arr = array($info,$start,0); }else{ $arr = array($info,$start,1); } } return $arr; }
自己写的一个大数据文件读取的实例,有什么意见,可以互相探讨!