很多时候,要处理文件,一般最先想到的就是file_get_contents() 等函数,但是在文件比较大的情况下,盲目的使用这样的函数会造成PHP的内存溢出(不使用任何参数)等致命错误。
当然,有一些函数能够一行一行的读取数据,比如fread(),fgetcsv(),而事实上,一般操作csv文件也是使用这几个函数,在正常使用过程中,只要没有特殊的需求,还是可以胜任大多数的情况。比如,如果有一个2000w~5000w条数据的文件,只想获取文件的总行数怎么办,循环累加吗?这显然是最直接的方法,其实还有更好的方法。
在PHP5以后,PHP为文件提供了一个面向对象接口类:SplFileObject。
详情可以查看:
The SplFileObject class
http://www.php.net/manual/zh/class.splfileobject.php这里提供一段简单有趣的程序。
function useSplFileObject($csvfile) {
$splFileObject = new SplFileObject($csvfile, 'rb');
$splFileObject->seek(filesize(