$options = array(
'debug' => 2,
'portability' => MDB2_PORTABILITY_EMPTY_TO_NULL,
);
$mdb2 = MDB2::factory($db_dns, $options);
$sql = <<<__EOS
SELECT
COUNT(*)
FROM
ta_poi
WHERE
poi_id > 0
__EOS;
$result = $mdb2->query($sql);
if ( PEAR::isError($sth) )
throw new Exception($sth->getMessage() . "\n" . $sth->getUserInfo());
$hogehoge = $result->fetchOne();
$result->free();
上記の場合どんどん消費メモリーが増えていくんです。。。
どうもvar_dump($mdb)でDBオブジェクトを確認してみるとコネクトしてからのSQL文が貯まっていっているようなので、そこが原因かなとdebugを0に変更してみる。
が、ダメ。。。
もっと何か貯めているのかなと思って下記リファレンスを見てみるとresult_bufferingという設定値があるではないか!!
早速falseで指定してみると無事治りましたとさ♪
▼リファレンス
http://pear.php.net/manual/ja/package.database.mdb2.intro-connect.php
▼修正後
$options = array(
'debug' => 0,
'portability' => MDB2_PORTABILITY_EMPTY_TO_NULL,
'result_buffering' => false,
);
問題は、result_bufferingをfalseにした場合の影響だな。。。
どうやらデフォルトではtrueなようなので。。。
0 件のコメント:
コメントを投稿