PHP Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: easy handle already used in multi handle

Asp*_*iEd 4 php curl libcurl google-shopping-api

我是用户而不是开发人员。开发人员不可用。

这是在 Google 购物产品提交脚本中使用的 Google API 库。

脚本成功运行,每 20 分钟一次,持续 2 年 + 昨天的前 5 个小时。

然后出现以下错误:

[18-Apr-2020 06:20:03 Europe/London] PHP Fatal error:  Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: easy handle already used in multi handle (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:162
Stack trace:
#0 ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(129): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(89): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 ../vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(ThObject(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 ../vendor/guzzlehttp/guzzle/src/Handl in ../vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 162
Run Code Online (Sandbox Code Playgroud)

脚本停止工作时唯一的服务器更改是应用到物理主机的安全补丁和服务器重新启动。

PHP v7.3.16

我相信使用的谷歌图书馆是 v2.0

我可以按照说明进行操作,尽管可能不会理解它们!

TIA

Mat*_*att 7

以防万一阅读本文的人正在使用 Laravel。几天前我们突然开始遇到同样的问题,尝试安装不同的 cURL 版本并设置 cURL 选项,没有任何效果。我通过更改 vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php 文件来修复它。寻找说的那一行

if (count($this->handles) >= $this->maxHandles) {
curl_close($resource);
} else {
...
}
Run Code Online (Sandbox Code Playgroud)

全部注释掉,而不是 if/else 只写

curl_close($resource);
Run Code Online (Sandbox Code Playgroud)

换句话说,无论句柄数是多少,您始终关闭 cURL 连接。这对我们立即起作用!

希望能帮助到你 :)