たぶん私はここで簡単な何かを見逃しているかもしれません...またはたぶん私は私の問題を過ぎて見ることができないほど長い間これをコーディングしてきましたが、CakePHP(1.3)を使用してselect(MySQL)を実行すると戻ることができるはずですたとえば、2,000件のレコードがあっても結果は...そうですか?
$options = array(
'conditions' => array(
'Lead.campaign_id' => $campaign['Campaign']['id']
),
'recursive' => -1,
'order' => 'Lead.goal DESC',
'contain' => false,
);
$leads = $this->Lead->find('all',$options);
それでも、このクエリは私に死の白い画面を与えます(define('LOG_ERROR', 2);
セット付き)。
'limit' => 300,
配列に(または同様の数..正確に300である必要はありません)を追加すると、$options
結果がプルされるため、クエリ自体は問題ではないことがわかります。
'fields'
さらに、配列のパラメーターを使用して返される列を制限しようとしました$options
... 1つのフィールドのみを返すように指示することもできましたが、それも機能しませんでした。
また、経由で使用するSQLステートメントをエコーアウトしました
$log = $this->Lead->getDataSource()->getLog(false, false);
debug($log);
もちろん、私は'limit'
それを表示するために入れなければなりませんでした(そうでなければ、私はただ死の白い画面を取得します)。次に、そのクエリを(制限なしで)phpMyAdminにコピーして貼り付けると、レコードが正常に返されます(「1,000行を表示」がオンの場合でも)。これを行うと、システムがクエリと出力を処理できると私は信じますが、おそらく私はそうすべきではないと仮定しています。
すべての行を取得し、レコードをページ分割しないようにしている理由は、ユーザーがダウンロードできるようにそれらをcsvファイルに出力する必要があるためです(この部分はすでに機能しています...クエリが機能する場合)。
これはおそらくタイムアウトの問題であり、それを提起する必要があると私に提案されましたが、それは私にとってはハックのようであり、より良い解決策があるはずです。
csvファイルのダウンロードを行っているので、クエリをファイルにストリーミングしてダウンロードする方法はありますか?それとももっと良い解決策がありますか?