我在使用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
内存泄漏
是否有人建议可能导致此未捕获的异常+泄漏?
答案 0 :(得分:0)
您的 XDebug 希望消耗的内存超过定义的限制
对于A脚本,您的限制是: 512MO
您的 XDebug 想要消费: 652MO
您有两种解决方案可以解决此技术问题
1 - 更新 php.ini => memory_limit = 768M
之后重新启动服务器
2 - 在 PHP 脚本中,将此行代码放在最上面:
ini_set("memory_limit","768M");
现在,您必须完全确定在生产环境中不会发生此内存泄漏,方法是禁用 XDebug