首页 > 解决方案 > Symfony:从 postgresql 获取时吃掉我所有的 ram

问题描述

首先这是我正在使用的:

Apache2 也已安装,但我使用的是 symfony 本地服务器。
Apache2 和 PostgreSQL 被禁用,每当我想处理这个项目时,我都会启动它们。

在使用php bin/console.
php bin/console doctrine:migrations:migrate命令正确地创建了我的表。
将数据插入表中没有问题。

我有两个不同的表:

它们在我的数据库的公共架构中,目前分别有 2 行和 6 行。

我试图在我的控制器中运行以下代码只是为了测试:

class MainController extends AbstractController {
    /**
     * @Route("/", name="index")
     */
    public function index(): Response {
        $room = $this->getDoctrine()->getManager()->getRepository(Room::class)->find(1);

        var_dump($room);

        return $this->render("main/index.html.twig", [
            "controller_name" => "welcome"
        ]);
    }
}

出于某种原因,当我试图在我的浏览器上加载这个页面时,symfony 吃掉了我所有的内存。如果我不关闭选项卡或停止本地服务器,我的计算机开始变慢,因为内存已满。

我可怜的内存

我也尝试简单地使用:

$room = $this->getDoctrine()->getManager()->getRepository(Room::class)->findAll();

我遇到了同样的问题。
但是,当尝试获取不存在的东西时,一切正常。

$room = $this->getDoctrine()->getManager()->getRepository(Room::class)->find(999);

是我设置的东西吗?还是 postgresql ?

谢谢你。

标签: phppostgresqlsymfonyubuntu

解决方案


显然,Room 对象太大并且还包含依赖对象,因此您的浏览器正在努力显示大量数据。我建议使用VarDumper 组件而不是 var_dump。它在使用内部引用和递归处理大型对象方面更有效。

dump($room);

推荐阅读