当前位置: 首页 > 知识库问答 >
问题:

狂饮:未捕获的例外

楚浩然
2023-03-14

我在使用古斯的时候有奇怪的问题

当我试图模拟一个错误的请求(例如,返回状态码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');
}

是否有人对可能导致此未捕获异常泄漏的原因提出了建议?

共有1个答案

薄哲
2023-03-14

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

你的限制是: 512MO的脚本
你的XDebug想要消耗: 652MO

您有两个解决此技术问题的解决方案
1-更新您的php.ini=

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

现在,您必须完全确保在正式生产环境中不会发生内存泄漏,禁用XDebug

 类似资料:
  • 我正在尝试为一些网站检索超文本标记语言。我正在使用PHPfile_get_contents它运行得非常好,但是很慢,而且有点有限,所以我决定试试Guzzes。不幸的是,我发现很难阻止Guzzes抛出异常,即使使用他们记录的异常处理。我的代码非常简单: 我不断得到以下错误: GuzzleHttp\Exception\ConnectException cURL错误28:无法连接到acme.biz端口8

  • 我想向Guzzle Http请求添加一些数据。有文件名、文件内容和带有授权密钥的头。 但我得到错误 可捕获的致命错误:传递给guzzle http \ PSR 7 \ multipart stream::add element()的参数2必须是数组类型,字符串给定,在vendor \ guzzle http \ PSR 7 \ src \ multipart stream . PHP的第70行调用

  • 我们正在尝试使用 guzzle 执行并发异步请求。在浏览了一些资源(例如这样和这样)之后,我们提出了一些在下面共享的代码。但是,它没有按预期工作。 看起来Guzzle正在同步而不是异步地处理这些请求。 出于测试目的,我们点击一个内部url,它会Hibernate5秒钟。当并发数为10时,我们预计所有10个请求最初将被排队并几乎同时发送到服务器,在那里它们将等待5秒钟,然后几乎所有的请求将几乎同时完

  • 更新:似乎用户代理并不是某些主机提供HTML所需的唯一标头,我还必须添加“accepts”标头,最终这为我解决了许多主机的问题: 我试图使用Guzzle来检索一些网站,但收到了403禁止错误(当它们在浏览器中工作正常时),我怀疑这是由于主机禁止了非标准的用户代理。为了解决这个问题,我试图在Guzzle中设置用户代理来模仿浏览器,但是我找不到任何有效的方法。我可以浏览网站,也可以使用WGET和CUR

  • 这是为了与ecomdash api一起使用,因为使用此方法时,所有json字符串都必须用方括号括起来,就像有一个产品数组一样。因此,对于一系列产品来说,json_encode确实可以像预期的那样工作,但如果只更新一个产品,则必须手动在json周围添加方括号。因此,在设置请求时,必须使用body而不是json。这是最后一段有效的代码。 我已经到处搜索,尝试了一百万件事,但我一直得到相同的错误时,试图

  • 我必须使用文件发送数组数据。仅使用数据即可正常工作: 但是,既然我不能将“form_params”与“multipart”一起使用,那么如何发送带有数组和布尔数据的文件呢? 我试过了: 但是我收到一个错误,因为“contents”不接受布尔值或数组值。 我需要一些帮助。 谢谢 更新:我无法解决这个问题,最后我不得不使用一个不太好的解决方案,包括作为查询字符串的表单文件参数并仅使用Multipart