在循环中多次写入文件或创建大字符串然后写入文件?

时间:2013-01-25 11:49:19

标签: php mysql sql io

我只是想知道在PHP中哪些被认为更有效。

我需要遍历MySQL结果并使用特定格式将其输出到文件中,我很想知道创建一个巨大的字符串是否更有效(我将要经历超过100,000行)并写入将字符串写入文件,或者使用fwrite写入(追加)我要添加到文件中的内容,因为我正在查看结果?

从一开始,我相信使用一个非常长的字符串会比继续写入文件更有效但我想知道PHP是否会处理一个非常长的字符串有任何问题?

感谢。

2 个答案:

答案 0 :(得分:3)

PHP在创建一个非常长的字符串时不会有问题,但它会占用大量内存。只要你有足够的可用内存,那么这不会是一个问题。从内存中读取和写入比写入磁盘快得多,因此沿着内存路径下行可能是一个选项,尽管有100,000行,您可以将其拆分并获得两全其美。

我的意思是每10,000行将你的字符串附加到文件中然后清空字符串,这样,你只需要写入文件10次并在内存中存储少量数据。

答案 1 :(得分:1)

如果您创建一个大字符串,请尝试将所有值收集到一个数组中并在写入之前将它们连接在一起。字符串是不可变的,如果你只是将值附加到字符串,这将导致性能不佳。

最佳解决方案是收集1000个结果,将此部分写入文件,另外收集1000个结果等等。