2013-01-25 41 views
1

我只是想知道哪些被認爲是更有效的PHP。我想知道創建一個巨大的字符串(我將要經歷超過100,000行)是否更有效率,以及如何使用特定的格式將其輸出到文件中將字符串寫入文件,或者使用fwrite寫入(追加)我想添加到文件中的內容,因爲我正在瀏覽結果?在循環中多次寫入文件或創建大字符串然後寫入文件?

從一開始,我相信使用一個很長的字符串會比保持寫入到文件更有效,但我想知道PHP是否會與處理很長的字符串的任何問題?

謝謝。

+0

所以,基本上你的問題不是你提到的問題,而是PHP在處理(很長)字符串時是否有問題。對? –

+0

@BhavikShah不,我的問題就是我所說的。哪個更有效率?我相信建立一個巨大的字符串將會更有效率,但我並不完全確定,而且我擔心PHP是否有字符串限制。 –

回答

3

PHP不會有創造一個很長的字符串的問題,這將然而使用大量的內存。只要你有足夠的內存可用,那麼這不會是一個問題。從內存中讀取和寫入比寫入磁盤要快得多,因此沿內存路徑往下可能是一個選擇,儘管有100,000行,您可以將其分開並獲得兩全其美的好處。

我的意思是每10,000行的字符串追加到該文件,然後空字符串,這樣一來,你就只能寫入文件10倍和存儲在內存中的數據量較小。

+0

非常感謝您的回覆。我想我會繼續提出你的建議。 –

1

如果創建一個大的字符串,嘗試蒐集所有值到一個數組,在寫之前一起加入。字符串是不可變的,如果你只是將值附加到字符串,這將導致性能不佳。

最好的解決辦法是收集例如1000個結果,這部分寫入文件,夾頭另一個1000個結果等。

+2

陣列將使用更多內存 –

+0

非常感謝您的迴應。這與囚徒的建議非常相似,所以我認爲這是我將繼續。 –

+1

你應該在內存中構建大串閱讀本主題:http://stackoverflow.com/questions/124067/php-string-concatenation-performance – Gregor