处理海量数据 API-PLATFORM

Dealing with huge data API-PLATFORM

我有一个名为 Companies 的实体,它与另一个名为 CrmItems 的实体具有 OneToMany 关系。

Entity/Company.php

/**
 * @ORM\OneToMany(targetEntity="App\Entity\CrmItems", mappedBy="company")
 * @ORM\JoinColumn(nullable=false, name="`CompanyID`", referencedColumnName="`company_id`")
 */
private $crmItems;

Entity/CrmItems.php

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Companies", inversedBy="crmItems")
 * @ORM\JoinColumn(nullable=false, name="company_id", referencedColumnName="`CompanyID`")
 */
private $company;

这里的问题是,一个公司可以有 11000 个项目。 因此,当我请求 http://localhost:8080/companies/2 时,出现了 502 错误

似乎 header 尺寸太大,与 X-Cache 自定义 header 尺寸有关。

我已经在网上搜索过 API 平台官方文档 https://api-platform.com/docs/v2.3/extra/troubleshooting/#upstream-sent-too-big-header-while-reading-response-header-from-upstream-502-error

解决方案似乎增加了 fastcgi 缓冲区。

# Bigger buffer size to handle cache invalidation headers expansion
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 16k;

我已经试过了,没有成功。

处理海量数据有什么技巧吗? API 平台是否支持关系型 collections 分页?

谢谢!

API Platform supports relational collections pagination?

我从不关注文档。

如果真的太大了,我会考虑其他的设计方式。为什么不为公司使用 CrmItems 和过滤器。这样你就可以对它们进行分页。