Guzzle:Uncaught exception&内存泄漏

时间:2015-01-21 13:22:39

标签: php exception curl memory-leaks guzzle

我在使用Guzzle

时遇到了奇怪的问题

当我尝试模拟错误的请求(例如返回状态代码404的请求)时,Guzzle会抛出一个ClientException,其中包含该请求失败原因的所有详细信息。

当我尝试捕获此异常时,我的脚本以一个致命的错误退出,声明我没有捕获异常并且它显示了一个XDebug跟踪,指出我有某种内存泄漏。

我的代码如下:
注意: httpClient是GuzzleHttp / CLient的有效实例。

$request  = $this->httpClient->createRequest(
    'GET',
    '/templates/'.$id
);

try {
    $response = $this->httpClient->send($request);
} catch (\Exception $exception) {
    die('exception occured');
}

我最终得到的错误如下:
Guzzle stack trace
Guzzle stack trace
内存泄漏
Memory leak

是否有人建议可能导致此未捕获的异常+泄漏?

1 个答案:

答案 0 :(得分:0)

您的 XDebug 希望消耗的内存超过定义的限制

对于A脚本,您的限制是: 512MO 您的 XDebug 想要消费: 652MO

您有两种解决方案可以解决此技术问题 1 - 更新 php.ini => memory_limit = 768M之后重新启动服务器 2 - 在 PHP 脚本中,将此行代码放在最上面:

ini_set("memory_limit","768M");

现在,您必须完全确定在生产环境中不会发生此内存泄漏,方法是禁用 XDebug