php - 如何重置 Guzzle 客户端并清除任何缓存值(内存使用情况)

标签 php guzzle

我有类似于下面的代码(它是示例代码)。使用 Guzzle,我多次调用同一个站点以查看文档是否存在。如果文档存在,我会保存它。当我进行每次调用时,内存使用量都会增加。最终,如果请求数量足够多,我就会耗尽内存。我使用 memory_get_peak_usage 跟踪内存使用发生的位置,它是 Guzzle 客户端。

代码按预期工作,但我找不到告诉 Guzzle 客户端“重置并转储所有以前的请求”的方法。我很确定它将结果缓存在内存中,但由于我已将它们写到文件中,所以我知道我不需要上述结果。我该如何丢弃它们?

FWIW,我目前的解决方案是制作一个新客户端,复制原始客户端的参数,并定期取消设置。它有效,但它很丑。

    $client = new \Guzzle\Http\Client('some_url');
    for ($i=0; $i<10000; $i++)
    {
        try {
            $pdf = $client->get( $pdf_name )->send();
            $this->filesystem->put(
                $pdf_name,
                $pdf->getBody( true )
            );
        } catch ( ClientErrorResponseException $ex ) {

        }
    }

最佳答案

根据对 Guzzle 客户端正在使用 Doctrine 的文件系统缓存的捆绑源代码的粗略浏览。引用资料:

Bundle 文档还提供了有关 Caching 的信息.因此,理论上要删除/禁用缓存,您所要做的就是删除对 <argument type="service" id="misd_guzzle.cache.filesystem"/> 的引用。来自您的 MyBundle/Resources/config/services.xml 的 addSubscriber 部分

关于php - 如何重置 Guzzle 客户端并清除任何缓存值(内存使用情况),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513322/

相关文章:

php - 处理 Guzzle 异常并获取 HTTP 正文

php - Laravel 和 Cookie 中的 GuzzleHttp

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 正则表达式在字符串中查找单词

PHPInfo 日期错误

php - 使用 API key 的 Guzzle 帖子不断导致 400 错误请求

php - Telegram Bot 错误网关

php - 如何自定义在 CodeIgniter 4 中找不到的 404 页面

javascript - 通过在进程中使用甜蜜警报来更改 JavaScript 默认警报

php - 我可以将 Guzzle 用于 GraphQL API 消费吗?