php读取大文件的方法
1、使用file 函数直接读取
$starttime = microtime_float(); ini_set('memory_limit','-1'); $file = "testfile.txt"; $data = file($file); $line = count($data);//总行数 $lastLine = $data[count($data)-1]; //最后一行 echo count($data); echo $endtime = microtime_float(); function microtime_float(){ list($usec,$sec) = explode(" ",microtime()); return (float($usec) + float($sec)) }
缺点,非常耗时,此方法不推荐使用,因为需要把文件全部载入内存
2、使用fgets函数,一行一行读取
<?php $file = fopen("testfile.txt","r"); while(!feof($file)) { echo fgets($file); } fclose($file);
3、是spl库函数
<?php try{ foreach( new SplFileObject('testfile.txt') as $line) echo $line.'<br />'; }catch (Exception $e){ echo $e->getMessage(); }
另外网上有很多按照块读取文件的,有兴趣的读者可以试试,我试了没成功,好像必须含有换行符“\n”才可以。