PHP读取X行内容到大文件y行的实现代码。
我们需要读取文件的几行,但是文件比较大。所以我们研究了在PHP下读取几行大文件的方法,并编写了一个方法,如下所示。如果缓存文件可以保存在一行中,并且指定行的数目是通过算法读取的,那么自然会比所有读取速度快得多。但是PHP在这方面似乎很弱,操作也不是很好。即使使用splfileobject仍不是特别理想,和内存的压力存在。
复制代码代码如下所示:
FP—>寻求美元(美元的开始- 1);
经过测试,这行代码去简单的文本的最后一行。内存是49kb。相当不错。在fgets跳绳fopen方式,你还是趁29kb记忆。
复制代码代码如下所示:
功能getfilelines($文件名,开始为1美元,50美元美元的底线=,= 'rb方法){
$ =数组();
如果(version_compare(php_version,'5.1.0 ',' > =)){ / / PHP版(因为需要使用splfileobject,PHP 5.1.0 > =)
$count = $行尾$的开始;
FP =新splfileobject美元($文件名,$方法);
FP—>寻求美元(美元的开始- 1); / / N线,寻求方法的参数从0开始。
($ i = 0;$ i;
$=当前(当前());获取当前行
(下一步);下一行
}
{ {其他文件> < < < > > 5.1
FP = fopen(美元美元美元的文件名,方法);
如果(!$ FP)
return'error:无法读取文件;
为($我= 1;美元美元我<<开始;+ +我){ / / $开始跳
fgets($ FP);
}
为($我;我的<<美元美元美元端线;+ +我){
$content { } = fgets($ FP); / /读取文件内容
}
Fclose($ FP);
}
返回array_filter(内容); / / array_filter过滤器:假、空,
}
效果很好,splfileobject类函数是更好的。