我有一个大文件,100,000行。我可以读取每一行并处理它,或者我可以将这些行存储在一个数组中然后处理它们。我更喜欢使用数组来获得额外的功能,但我真的很关心与在数组中存储多行相关的内存使用情况,以及它是否值得。
答案 0 :(得分:3)
您应该熟悉两个功能。
第一个是file()
,它将整个文件读入一个数组,每行作为数组元素。这适用于较短的文件,可能不是您想要在100k行文件上使用的文件。此函数处理自己的文件管理,因此您无需自己显式打开和关闭文件。
第二个是fgets()
,您可以使用它一次读取一行文件。只要有更多行要处理,您就可以使用它循环,并在循环内运行行处理。您需要使用fopen()
来获取此文件的句柄,您可能希望自己跟踪文件指针以进行恢复管理(即,如果某些内容横向移动,您将不必从头开始重新启动处理脚本失败)等等。
希望这足以让你开始。
答案 1 :(得分:1)
两者结合怎么样?将1000行读入数组,处理它,删除数组,然后再读取1000行等。监视内存使用情况并调整一次读入数组的数量。