1

PHPでどちらがより効率的であると考えられているのか疑問に思っていました。

MySQLの結果をループして、特定の形式を使用してファイルに出力する必要があります。巨大な文字列を作成して(100,000行以上を処理する)、文字列を次のように書き込む方が効率的かどうかを知りたいです。結果を確認しながら、ファイル、またはfwriteを使用してファイルに追加したいものを書き込み(追加)しますか?

最初から、非常に長い文字列を使用する方がファイルに書き込み続けるよりも効率的だと思いますが、PHPで非常に長い文字列の処理に問題が発生するのではないかと思います。

ありがとう。

4

2 に答える 2

3

PHPは非常に長い文字列の作成に問題はありませんが、大量のメモリを使用します。十分なメモリが利用可能である限り、これは問題にはなりません。メモリからの読み取りと書き込みはディスクへの書き込みよりもはるかに高速であるため、メモリルートをたどるオプションもありますが、100,000行の場合は、それを分割して両方の長所を活かすことができます。

つまり、10,000行ごとに文字列をファイルに追加してから文字列を空にします。これにより、ファイルへの書き込みは10回のみになり、メモリに保存されるデータ量は少なくなります。

于 2013-01-25T11:54:01.773 に答える
1

大きな文字列を作成する場合は、すべての値を配列に収集し、書き込む前にそれらを結合してみてください。文字列は不変です。文字列に値を追加するだけでは、パフォーマンスが低下します。

最善の解決策は、たとえば1000の結果を収集し、この部分をファイルに書き込み、さらに1000の結果を収集することです。

于 2013-01-25T11:53:56.523 に答える