0

私のWebアプリケーションでは、ユーザーがExcelファイルをインポートし、そのファイルからmysqlデータベースにデータを書き込むことができます。問題は、Excelファイルに1000行でも多くのエントリがある場合、PHPのメモリが不足しているというエラーが表示されることです。これは、ファイルの読み取り中に発生します。php.iniファイルでPHPに1024MBを割り当てました。

私の質問は、このような大きなデータをPHPにインポートする方法です。

私はCodeIgniterを使用しています。エクセルファイルを読むために、私はこのライブラリを使用しています。


解決しました。xlsの代わりにCSVを使用しました。数秒で10,000行のデータをインポートできました。よろしくお願いします。

4

2 に答える 2

3

他の人が言っているように、1000レコードはそれほど多くありません。レコードを一度に1つずつ、または一度に数つずつ処理し、各反復で使用する変数が、その行の終了後または変数の再利用後にスコープ外になることを確認してください。

Excelファイルをcsvにエクスポートすることで処理の必要性を回避できる場合、それはさらに大きくなります。その場合、そのようなライブラリは必要ありません(独自のメモリの問題がある場合とない場合があります)。

必要に応じてメモリ使用量を増やすことを恐れないでください。これで問題が解決します。メモリを購入するのが最も安価なオプションである場合があります。そして、1 GBを怖がらせないでください。これは、このような単純なタスクには多くのことですが、メモリがあり、それだけで十分な場合は、今のところ十分です。

さらに、古いバージョンのPHPを使用している場合は、以前のバージョンよりもはるかに優れたメモリ処理を行うPHP5.4に更新してみてください。

于 2012-09-17T22:11:36.010 に答える
1

ループに一度に1つずつ挿入する代わりに。一度に100行挿入します。

いつでも実行できます

INSERT INTO myTable (clo1, col2, col2) VALUES 
(val1, val2), (val3, val4), (val5, val6) ......

このようにして、ネットワークトランザクションの数が減り、リソースの使用量が減ります。

于 2012-09-18T11:53:07.270 に答える