PHP读取超大文件的方法
由于最近项目中需要对一个超大的(3.6G)文本文件进行分段读取,通过查找文档写了一个符合需求的函数,即是对大文件操作时的一些方法总结,记录分享一下。下面直接贴出代码,代码其实很简单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php /** * PHP读取超大文件 * * param string $filename 要读取的文件名 * param int $count 需要读取的行数 * param int $offset 文件的指针位置 * param int $line_length 读取一行长度最多为 line_length - 1 字节的字符串,默认为 1024bytes * return array **/ function readBigFile($filename, $count = 20, $offset=0, $line_length=1024) { $i = 0;//计数器 $handle = fopen($filename,'rb');//以二进制文件读取方式打开文件 $lines = array(); while ($i < $count && !feof($handle)) { fseek($handle, $offset, SEEK_SET); $lines[] = fgets($handle); $offset = ftell($handle); $i++; } fclose($handle); //返回结果 return array('rows'=>$lines, 'offset'=>$offset); } |