Symfony 4 API突然变得非常慢



我在这里寻求您的帮助,我对Symfony 4。

的确,我与Symfony 4一起开发了REST API,直到今天呼叫API变得非常慢,一切都非常好。

首先,他给了我以下错误:允许记忆大小为268435456字节耗尽(尝试分配98570240字节)在/home/user/user/user/tlt_symfony_back/vendor/jms/serializer/serializer/src/src/jsonserialialialialializatirization.phpphp on 186中。2019-03-20T12:55:19 01:00 [关键]致命错误:允许记忆大小为268435456字节耗尽(尝试分配98570240字节)

我通过将 memory_limit 设置为 512M php.ini 中解决了,但是呼叫花费很长时间。使用Postman,它将完全关闭窗口。

i使用 fosrestbundle jms_serializer

预先感谢您的帮助。

这是用于获取所有公告的示例代码:

public function getAnnonces(Request $request, ObjectManager $manager){
    $annonces = $manager->getRepository(Annonces::class)->findAll();
    if(!$annonces)
        return new JsonResponse([
            'status' => 'error',
            'message' => 'Il existe aucune annonce'
        ]);
    return $annonces;
}

和Annonces Entity具有基本属性:标题:字符串,类型:字符串,用户:许多人与用户实体的关系

数据库:mysql。

尝试在存储库呼叫后尝试转储$ annonces,真的有一个轻量级对象吗?尝试通过

发布一个公告
$annonces = $manager->getRepository(Annonces::class)->find(1);

您需要这里有关系的学说实体吗?如果没有,请尝试获取内容的数组

$qb = $manager->createQueryBuilder();
$annonces = $qb->select('a')->from(Annonces::class, 'a')->getQuery()->getResult(PDO::FETCH_ASSOC);

如果出现问题而没有任何源代码更改,则意味着它是从一开始的,但是它的比例并不明显。

我的第一张照片是检查数据库关系。例如,如果您具有onetomany的关系,则fetch ="急切"或fetch =" lazy",并且右侧表中有很多元素,它将减慢查询左侧表。您可以进行简单的检查是,添加fetch =" extra_ lazy"的问题

https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/tutorials/extra-lazy-associations.htmlhttps://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/Annotations-Referation.html#annref_onetomany

如果这无济于事,我建议您检查表索引。

最新更新