php - 在 GuzzleHttp\Client 上调用“请求”时允许的内存大小耗尽
问题描述
我正在使用以下方法调用 API(使用 Guzzle,PHP HTTP 客户端 6.5.2):
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/api');
它适用于几次调用,但如果有大量数据并且我必须在循环中多次发出请求(逐页获取数据):
$client = new \GuzzleHttp\Client();
do {
//...
$response = $client->request('GET', 'https://example.com/api');
//...
} while($pageNumber <= $totalPages);
然后我最终会在循环中间得到以下内存错误:
致命错误:第 40 行 guzzlehttp/guzzle/src/Handler/CurlHandler.php 中允许的内存大小为 268435456 字节已用尽(试图分配 1384448 字节)
返回的大小$response
几乎是 1MB。此外,它不是无限循环。$pageNumber
正在正确计算并且循环结束以获取更少量的数据。当总页数为 200 页时,会发生内存错误。
知道如何解决这个问题吗?
解决方案
请在 GitHub 上查看此问题,可能与您的情况有关。
否则没有足够的信息可以说些什么。这个问题很容易与 Guzzle 无关。
对您来说最好的选择是使用 Blackfire 分析您的代码(您可以在 GitHub 上的上述问题中看到一个示例)。
推荐阅读
- node.js - 猫鼬 - 子文档数组未保存在父文档中
- android - 使用 Fastlane 上传 apk 的未定义方法
- apache-spark - 我在 Hbase 中保存了一个 DataFrame,我得到: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/TableDescriptor
- python - 如何从 Python 访问不同的 Google 表格?
- c# - 带有 where 和 sum 的 Odata
- winapi - 使用 WinAPI 设置 NVRAM 变量
- mysql - MYSQL 服务器在 100 万条记录上运行查询非常慢
- reactjs - 如何更新具有对象的反应状态?
- c# - 在 Azure 函数中调整图像大小的替代方法(imageResizer 不起作用)
- r - 为什么这个 ifelse 语句会产生 NA?