phpで、postgresqlのDBに大量の検索(SELECT)をかける処理を行っています。検索数は1万件以上あるのですが、一括でデータをSELECTしようとすると、途中まではうまくいくのですが、途中から「Allowed memory size of 8388608 bytes exhausted in ***(DB名)」というエラーメッセージが出力されて止まってしまいます。

メモリサイズの問題だとは思うのですが、対処法がわかりません。
どなかた分かる人がいましたら、教えてください。
よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/07/28 17:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ito-yu No.1

回答回数323ベストアンサー獲得回数14

ポイント35pt

php.iniのmemory_limitを見直してください。デフォルトは8Mとなっていると思います。

id:sasamame

はぃ。なっていました。10Mにしてみたらできるようになりました。

ありがとうございました。

2006/07/21 17:15:51
id:Kumappus No.2

回答回数3784ベストアンサー獲得回数185

ポイント35pt

http://www.clara.co.jp/inquiry/faq/ma0010.php

/etc/php.ini の書き換えによって割当量を変更させることが可能です。

ただし、このようなエラーが出る場合はプログラムの作り方自体に何か問題がある場合が多いです。メモリはいくらあっても限界はありますから…。

一度にデータをSELECTするのではなく、分割してSELECTしてメモリが溢れない範囲で順次結果を持ってくるようなやりかたにしたほうがいいと思います。

id:sasamame

書き換えですか。

なるほど。了解しました。ありがとうございました。

2006/07/21 17:15:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません