我必須用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文本文件,尋找第一個文件的行末,附加其他文本文件的第一行並循環。 –
感謝您的想法。這種「循環方法」可能會變慢。因此,我正在尋找某種「批量」或緩衝區操作。 –
我想你並不是一遍又一遍地循環着。你只需要從兩個文件的頂部到底部同時進行排隊。 –