|
質問
>> getcountについて
|
|
モデルのgetcountについてソ\ースを読んでるんですがmysql.phpとpgsql.phpにfunction countがありますがgetcountはmysql.phpとpgsql.phpのfunction findを使ってると思うのですが、それぞれのfunction countにあるmysql_num_rows,pg_num_rows命令にはなにか使うと不都合があったのでしょうか?
|
|
|
こちらはメモリ使用量と実行速度の関係です。
レコード数を数えるのにmysql_num_rows等を利用するのは不適切なため、
count関数は通常使用致しませんが
まだ名残として残っております。
|
|
|
メモリ使用量の関係からですか、なんとなくわかりました。
実は又疑問があるのでお答えお願いできるでしょうか。
$query = \\\"select recording_file.date,station.name from recording_file,station \\\";
$c->set(\\\"data\\\",$c->station->findquery($query,\\\"recording_file.station=station.id\\\",\\\"recording_file.date DESC\\\"));
上記で動作させたところ1000件ぐらいまでは動作しますがそれを越すと動作せず/var/log/apache2/error_logに以下のエラーがでます。
Allowed memory size of 8388608 bytes exhausted (tried to allocate 3435694 bytes)
文法は間違っていないと思います。
最初、$c->station->findqueryを$c->recording_file->にしてたら全く動作しませんでした。ソ\ースを読んでるんですがそこの理由がわかりません。
|
|
|
ちょっと追加です、データが増えると動作しなくなるコマンドはmysql画面では動作します。
ちいたんマニュアルを読みなおしてfindqueryを参考に$queryを書き直したら
$query = \"select recording_file.date,station.name from recording_file left join station on recording_file.station=station.id\";
動作するようになりました。
mysql画面で動作するという事はちいたんのどっかでおかしくなってるという事でしょうか?
|
|
|
それはフレームワーク側でなく、
php.iniのメモリ最大使用量とプログラムの書き方によるものです。
|
|