我必须逐行读取CSV文件,可以是10到20 Meg。 file()没用;-)我必须找到最快捷的方法。
我已尝试使用fgets(),运行正常,但我不知道每次调用它时是否读取了一个小块,或者它是否缓存了更大的块并优化了文件I / O. 我是否必须尝试fread()方式,自己解析EOL?
由于 塞德里克
答案 0 :(得分:7)
如果可能,你应该使用fgetcsv()。
否则,总会有fgets()。
答案 1 :(得分:2)
stream_get_line显然比大文件的fgets更有效。如果您为读取指定了合理的最大长度,我没有看到任何理由为什么PHP必须“提前读取”以读取一行,因为您似乎在担心。
如果您想使用CSV,那么fgetcsv将以稍微更合理的格式返回结果。
答案 2 :(得分:1)
答案 3 :(得分:0)
您应该查看fgetcsv()
,它会自动将昏迷分隔线解析为数组。
至于运行时效率,我不知道。您必须运行快速测试,最好使用您希望稍后处理的文件大小。但如果fget ???我会感到惊讶和fput ???函数未进行I / O优化。