PHP致命错误:内存不足(已分配6132072448)(试图分配32768字节)

时间:2019-06-20 12:34:04

标签: php apache symfony apache2

我知道有很多类似的问题和解决方案可以解决此错误,但我已经尝试了很多方法,但没有任何效果。

基本上,我有此错误:PHP致命错误:内存不足(已分配6132072448)(试图分配32768字节)。

我以前没有问题,我在运行的代码中看不到是什么会导致问题的。

我正在使用symfony / doctrine处理我的数据库并处理GET / POST。一些API路由有效,我接收到数据,但这是因为它是一个很小的json输出,但是当它稍大一些时,我会得到一个错误500。

我尝试将内存限制增加到128、256,以达到可笑的数量并增加到-1。我的phpinfo文件告诉我,考虑了更新,但是错误不断发生。

编辑
-我尝试删除了foreach循环,但没有任何变化。
-我更改了etc / php / x.x / apache2中的每个php.ini(5.6、7.0、7.1),以防万一(我使用的是7.2)。
-我尝试删除'jms_serializer'并使用简单的json_encode,仍然没有任何变化。

这是我在localhost中得到的响应:(1012 B,在800到1000毫秒内)对于“项目”

[
  {
   id: "fdgdf",
   name: "gdfg",
   description: "dfgdsfdgsdgsd",
   project_date_start: "2022-01-01 00:00:00",
   project_date_end: "2019-05-21 12:19:27"
  },
  {
   id: "test1",
   name: "test1",
   description: "desc",
   project_date_start: "2020-01-30 00:00:00",
   project_date_end: "2020-01-30 00:00:00"
  },
  {
   id: "test",
   name: "test Project",
   description: "Test",
   project_date_start: "2021-02-02 00:00:00",
   project_date_end: "2022-02-02 00:00:00"
  }
 ]

正如我说的那样,我的某些根源正在工作,因为数据非常小。因此,我尝试将更多数据添加到此根目录以测试是否出现相同的错误,但没有。 这两个表/根之间的唯一区别是“项目”有2个表链接为“ OneToMany”。所以我猜想symfony /准则必须遍历项目的每个链接表,然后继续下去。但是,当我创建查询时,我只选择“项目”字段,而不连接任何其他表。

编辑结束

以下是我用于检索数据的路线和代码的示例。响应也很小(976B),但仍然会导致错误。

   /**
     * @Route("/api/project", name="api_project")
     */
    public function project(Request $request)
    { 
        $projectRepo = $this->getDoctrine()->getRepository(Project::class);

        $project = $projectRepo->findAllProject();

        foreach($project as &$p) {
            $p['project_date_end'] = $p['project_date_end']->format('Y-m-d H:i:s');
            $p['project_date_start'] = $p['project_date_start']->format('Y-m-d H:i:s');
        }

        $data = $this->get('jms_serializer')->serialize($project, 'json');

        $response = new Response($data);
        $response->headers->set('Content-Type', 'application/json');
        $response->headers->set('Access-Control-Allow-Origin', '*');

        return $response;
    }


    public function findAllProject()
    {
        return $this->createQueryBuilder('p')
            ->select('p.id', 'p.name', 'p.description', 'p.project_date_start', 'p.project_date_end')
            ->getQuery()
            ->getResult()
        ;
    }

0 个答案:

没有答案