【问题标题】:Why am I getting cURL error 77 doing multiple requests using Guzzle?为什么我在使用 Guzzle 执行多个请求时收到 cURL 错误 77?
【发布时间】:2020-07-16 19:59:07
【问题描述】:

我正在尝试使用 Guzzle 发出多个请求,但是当我尝试获得响应时,我不断收到 cURL 77 error。我正在使用 JWT 连接到 Zoom API。我有一个包含 700 个项目的数组,因此对于每个项目,我都尝试使用 getAsync 创建一个请求并传递 jwt 令牌。

我的代码是这样的:

foreach ($agrupado as $registro) {
$requestArr[$registro['id']] = $cliente->getAsync('https://api.zoom.us/v2/webinars/'.$id.'/registrants/'.$registro['id'], [
                'headers' => [
                    'Authorization' => 'Bearer '.$jwt
                ]]);
}
$respostas = \GuzzleHttp\Promise\unwrap($requestArr);
var_dump($respostas);

如果我使用get 方法和相同的令牌执行相同的请求,它就可以工作。我得到了回应,没有问题。这很奇怪。

【问题讨论】:

  • 试过关闭certificate verificationnew Client(['verify' => false]);?如果这样可行,则您的 CA 包可能已过期。
  • 这个证书很奇怪。我从未使用证书来使用 Zoom 的 API。事实上,我有相同的脚本,具有相同的逻辑,工作,使用纯 PHP 的 CURL。我现在使用 Guzzle 的想法是让脚本更简单、更快速。所以,我不明白。我需要为此 getAsync 方法使用证书吗?
  • 查看我链接的问题。如果您使用的是 HTTPS,则您使用的是私钥/公钥、证书,并且如果您在服务器上的 CA 捆绑包已过期,您将无法建立安全连接。如果跳过验证一切正常,则解决根本问题。
  • 是的,我看到了。但我可以提出要求。问题是当我使用 Guzzle 和多个请求时。如果我只对该端点进行一次请求,它就可以工作。所以,这是关于证书的消息,但问题似乎是其他的。如果是证书问题,我将无法提出单个请求,对吗?

标签: php guzzle zoom-sdk


【解决方案1】:

我找到了 this 教程,现在我可以使用 Guzzle 向 Zoom 的 API 发出多个请求。

我认为问题在于我发出了很多请求,而 API 在某些时候拒绝了这些调用。我知道这一点,因为我用几个请求测试了它,比如 5 或 10。这很好。当我执行 30 次请求时,我收到证书错误。

所以,我使用 Guzzle 的 Promise 和 EachPromise 类实现了 this 教程(Promise 中的并发)中的示例。我保持少量的并发并在脚本末尾使用方法等待。现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多