【问题标题】:Heroku - Timeout on cURL (PHP)Heroku - cURL 超时 (PHP)
【发布时间】:2012-11-27 22:04:33
【问题描述】:

我正在尝试为我的应用程序创建 API 代理,但我在 Heroku 上遇到了一些奇怪的超时错误。

表示如下:

2012-12-10T12:49:24+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path=/api/v1/users/me host=host.herokuapp.com fwd=174.129.79.221 dyno=web.1 queue= wait= connect= service=30000ms status=503 bytes=0

代码如下:

$request = curl_init();
curl_setopt($request, CURLOPT_URL, $url);
curl_setopt($request, CURLOPT_USERAGENT, 'AppProxy/1.0');
curl_setopt($request, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Authorization: Basic ' . $authorization,
    'X-Requested-With: XMLHttpRequest'
));
curl_setopt($request, CURLOPT_VERBOSE, 1);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($request);
echo curl_errno($request) . "<br />";
echo curl_error($request) . "<br />";
echo $httpStatus = curl_getinfo($request, CURLINFO_HTTP_CODE) . "<br />";
curl_close($request);
echo $response . "<br />";

有什么问题,或者我在代码中遗漏了一些东西来让它工作? 有人在 Heroku 上遇到过同样的问题吗?

提前谢谢...

【问题讨论】:

  • 您能否提供有关 API 代理 的更多详细信息以及正常 API 使用之间的确切区别。
  • @William Lepinski 你有没有弄清楚发生了什么?我在尝试 cURL 本地 PHP 端点时遇到了同样的错误。

标签: php curl heroku timeout


【解决方案1】:

尝试像这样对 cUrl 请求设置超时

curl_setopt($request, CURLOPT_CONNECTTIMEOUT, 15);

从运行它的盒子中获取相同的资源需要多长时间?

代码 503 也是服务不可用错误。可以在浏览器中打开资源吗?

【讨论】:

  • 同样的请求,以 Postman 为例,只用了 180 毫秒。
  • 也许 heroku 盒子无法到达另一个盒子。如果您可以 ssh 进入 heroku 框,请尝试从那里进行一些诊断
  • 本例中的另一个盒子是同一个盒子。我只是用一些不能在客户端的敏感数据来包装请求。像代理一样工作,但请求是与登录用户的 APIKey 一起发送的(是的,我正在做一个单页 JS 应用程序)。听起来 Heroku 对使用 CURL 在服务器端发出的请求有一些安全策略。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 2012-05-05
  • 2023-03-18
  • 1970-01-01
  • 2016-03-08
  • 2015-01-14
相关资源
最近更新 更多