也许我在这里遗漏了一些简单的东西......或者我只是在这方面编码了很长时间我看不到我的问题,但是使用 CakePHP (1.3) 和做一个选择 (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 语句 via
$log = $this->Lead->getDataSource()->getLog(false, false);
debug($log);
当然,我必须'limit'
输入它才能显示(否则我只会得到白屏死机)。然后我将该查询(无限制)复制/粘贴到 phpMyAdmin 中,它会很好地返回记录(即使打开“显示 1,000 行”)。这样做让我相信系统可以处理查询和输出,但也许我在做一个我不应该做的假设。
我试图获取所有行而不对记录进行分页的原因是因为我需要将它们输出到 csv 文件以供用户下载(这部分已经在工作......当查询工作时)。
有人向我建议这可能是一个超时问题,我应该提出这个问题,但这对我来说似乎是一个黑客,必须有一个更好的解决方案。
由于我正在下载 csv 文件,也许有一种方法可以将查询流式传输到然后下载的文件?或者也许有更好的解决方案?