ホーム > フォーラム > 開発 > モジュール開発 > MySQL から多めの行数を取得すると、画面が真っ白になる

MySQL から多めの行数を取得すると、画面が真っ白になる
投稿者: coderesume | 投稿日時: 2014/1/27 1:35 | 閲覧: 5528回
coderesume

始めて投稿します。XOOPS Cube 2.2 を使用しています。

XoopsObjectGenericHandler を継承したクラスで、
以下のようなコードを書いて、MySQLからデータを取得しています。

$mCriteria = new CriteriaCompo();
$data =& $this->getObjects($mCriteria);

MySQLのテーブルの行数が1万行を超えていて、

$mCriteria->setLimit( 300 );

というような制限を加えれば、問題なく動くのですが、
全件を取得しようとすると、画面が真っ白になってしまいます。
全件でなくても、
$mCriteria->setLimit( 400 );
でも真っ白になります。

時間がかかっても全件を取得したいのですが、どうすればいいでしょうか?

タグ: ,

コメント(2)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: MySQL から多めの行数を取得すると、画面が真っ白になる 
投稿者: nao-pon | 投稿日時: 2014/1/27 14:07
nao-pon

coderesume さん、こんにちは。

多分、PHP への割り当てメモリーが不足しているのが原因だと思います。

しかし、PHP のメモリ空間へすべてのデータを保持させる必要性はあるのでしょうか?

データを表示するフロントエンドなら、すべてのデータを表示するということはないと思うので、SQL でデータを絞りある程度の件数でページングするのが常套手段だと思います。

また、データをダウンロードさせたいというのであれば、XoopsObjectGenericHandler を使わずに、直接コマンドを発行してテンポラリファイルに随時書き出すなどして、それをダウンロードするなどの方法もあると思います。

「いや、XoopsObjectGenericHandler に全件突っ込みたいんだ。」ということであれば それに見合った PHP への割り当てメモリと PHP 実行時間の制限を長くすることで対応できると思います。

的外れな回答でしたら、ごめんなさい。

Re: MySQL から多めの行数を取得すると、画面が真っ白になる 
投稿者: coderesume | 投稿日時: 2014/1/27 22:55 | 親コメント: #21393
coderesume

nao-ponさん、ご返信ありがとうございます。

おっしゃる通りだと思います。自分は普段はメモリがふんだんに使えるソフトウェアの開発をしており、webサイトの構築ノウハウがないので、こんな質問をしてしまいました。

この件については、解決しました。

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top