返回超过13578条记录时,Doctrine查询失败

时间:2017-03-22 23:22:27

标签: php mysql symfony doctrine-orm

我有一个symfony 2.8应用程序,它使用一个学说查询来生成一个分页列表,以显示申请人表格中的所有记录。直到最近一直很好。

现在,当我导航到该页面时,我在IE和Chrome中收到错误消息或Firefox中的空白屏幕。

HTTP标头显示500错误,但我的symfony日志或PHP错误日志中没有任何内容(错误日志记录在php.ini中打开)

我认为存在代码问题,所以花了几个小时试图调试问题。

插入大量的try / catch,echo,debug,print_r和var_dump语句以及测试针对数据库的runnable查询,通过实际数据,设置限制和查询部分集我知道只有当我尝试在我的应用程序中返回超过13578条记录时才会出现问题

这是我的querybuilder声明:

$query = $this->getEntityManager()->createQueryBuilder();
$query->select("a")
    ->from("ApplicationBundle:Applicant", "a")
    ->where("a.id > 0 ");

return $query->getQuery()->getResult();

我可以返回实际的SQL,对数据库运行它并获取所有内容,但我不会通过getResult()调用返回任何内容。甚至没有错误!

如果我将其更改为:

,则可以正常工作
$query = $this->getEntityManager()->createQueryBuilder();
$query->select("a")
    ->from("ApplicationBundle:Applicant", "a")
    ->where("a.id < 13579 ");

return $query->getQuery()->getResult();

为了减少表中数据损坏的可能性,我测试了以下内容并且它也有效:

$query = $this->getEntityManager()->createQueryBuilder();
$query->select("a")
    ->from("ApplicationBundle:Applicant", "a")
    ->where("a.id > 13578 ");

return $query->getQuery()->getResult();

我搜索了有关结果集最大大小的任何限制的文档,但没有找到任何内容。有没有人知道这是doctrine / symfony设定的限制,还是有人遇到类似问题并设法克服它?

修改

  1. 我正在使用KNPPaginatorBundle对记录进行分页
  2. php.ini最大内存已经加倍

1 个答案:

答案 0 :(得分:0)

根据诺加德的建议,它与记忆有关。

我编辑了我的php.ini文件并增加了可用的最大内存,但是当我在IIS PHP管理器设置中检查时,旧值仍然存在。我增加它以匹配php.ini中的设置,该网站再次运行。