【问题标题】:How to set timeout for google api php client library如何为google api php客户端库设置超时
【发布时间】:2015-10-18 01:56:52
【问题描述】:

我正在使用 Google 的 php client library 构建应用程序。有时,Google 最多需要 100 秒来响应 API 请求。我想将套接字超时限制为 30 秒。

有人知道这怎么可能吗?在文档中没有看到任何明确的示例,并且我在查看源代码时没有看到任何与超时相关的内容。

我确实在 Java 客户端的文档中找到了 this example,但我似乎找不到 PHP 等效项。

感谢您的帮助。

【问题讨论】:

  • 是否与 Gmail API 有关?你不能只设置 30 秒的限制吗?
  • 我正在使用 php 客户端库,所以我没有发出任何原始 http 请求,该库是

标签: php google-api google-api-php-client gmail-api


【解决方案1】:

在 Google API v2 中,这可以通过 Guzzle 客户端完成

$http = $googleClient->getHttpClient();
$http->setDefaultOption('connect_timeout', 10);
$http->setDefaultOption('timeout', 10);

【讨论】:

【解决方案2】:

根据this issue可以直接传参数给curl。

$client->setClassConfig('Google_IO_Curl', 'options',
    array(
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_TIMEOUT => 10
    )
);

【讨论】:

  • 此答案不再有效,setClassConfig 在最新版本中已弃用。请参阅下面的答案
【解决方案3】:

这个在 v2.2.2 上为我工作:

$client->setConfig('CURLOPT_CONNECTTIMEOUT', 100); 
$client->setConfig('CURLOPT_TIMEOUT', 1000);

【讨论】:

  • 你是如何测试的?我在 guzzle 对象中通过 xdebug 什么也没看到。
  • 它给了我想要的输出,因为脚本在这段时间内完全执行。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多