【发布时间】:2020-01-22 15:00:10
【问题描述】:
我正在使用以下方法调用 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 页时会发生内存错误。
知道如何解决这个问题吗?
【问题讨论】:
-
您得到的
$response是什么?有这么大吗?另外,我没有看到$pageNumber++在任何地方完成? -
所以这意味着某些变量没有在循环中重置或包含太多信息。显示更多相关代码,因为现在看起来不错