我必须用PHP创建超过400 MB的大型csv导出文件。初始的导出文件和PHP代码的草稿允许对性能进行一些猜测。使用PHP高效创建大型csv文件
为了避免极长的处理时间,我应着眼于建立有效的导出文件,并避免PHP array
-operations,因为他们在这种情况下,速度太慢。 “高效创建文件”的意思是:将大块文本附加到文件中的其他大块,每个大块快速创建。
不幸的是,“大块”相当矩形比线。建立我的导出文件将有很多线起点的开始,像这样:
Title a, Title b, Title c \n
"2014", "07", "01" \n
"2014", "07", "02" \n
...
然后我会到一个文本的“矩形”添加到行开始的权利:
Title a, Title b, Title c, extention 1, extention 2, extention 3 \n
"2014", "07", "01", "23", "1", "null" \n
"2014", "07", "02", "23", "1", "null" \n
...
如果我必须一行一行地做这件事,它会让我再次放慢脚步。所以我希望能够在文件中添加“矩形”,就像在某些文本编辑器中一样。 PHP中巨大的文本缓冲区的具体体验也有帮助,也可以工作。
因为它不是我的主机,我不知道我是否有权限调用SED/AKW。
所以问题是:可以从经验的建议如何有效地处理PHP中的大csv文件(文件块操作,文件“矩形”操作)或只是如何有效地处理PHP中的大字符串缓冲区?似乎没有字符串缓冲区的框架。
感谢您的关注:-)
注:这是不是的此重复:https://stackoverflow.com/questions/19725129/creating-big-csv-file-in-windows-apache2-php
只是一个想法:打开booth文本文件,寻找第一个文件的行末,附加其他文本文件的第一行并循环。 –
感谢您的想法。这种“循环方法”可能会变慢。因此,我正在寻找某种“批量”或缓冲区操作。 –
我想你并不是一遍又一遍地循环着。你只需要从两个文件的顶部到底部同时进行排队。 –