【问题标题】:Curl returns null sometimes after refresh php刷新php后curl有时会返回null
【发布时间】:2017-10-06 13:45:37
【问题描述】:

我使用 curl 从 Steam 中获取有关库存的 json,有时它可以工作,有时却不能。

我认为这是关于经常请求

有人可以解决这个问题吗?

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://steamcommunity.com/profiles/'.$id.'/inventory/json/730/2/');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$res = curl_exec($curl_handle);
if ($res === false) throw new Exception('Curl error: '.curl_error($ch));
$dec = json_decode($res, true);
curl_close($curl_handle);

这是我使用的卷曲

【问题讨论】:

  • 缓存成功的请求(到文件/等),并将该缓存用作后备。如果端点不能可靠地工作,您的层需要添加弹性。
  • 如果你对这个问题打分,请说出原因!
  • 但我不想为它做一个文件,我只是想要一个请求,所以如果它有任何更新,我想实时而不是文件
  • 如果您不想使用缓存,那么您只能像您所支持的第三方来源一样可靠。如果它不能 100% 工作,那么你也不能。
  • 所以它不存在任何解决方法吗?喜欢更改任何请求数据,因此他们不知道其相同的 api 调用

标签: php api steam


【解决方案1】:

连接超时时间较短,请尝试更多值,例如 10 秒。 如果没有解决,过去的异常错误以获得更多帮助。

curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10);

【讨论】:

  • 没有改变它:/
  • 这是我测试网站的网址
  • 我可以做一个 var_dump,这样你就可以连续刷新 5 次,然后你得到 null
【解决方案2】:

尝试使用代码显示标题并发现问题:

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://steamcommunity.com/profiles/'.$id.'/inventory/json/730/2/');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
curl_setopt($curl_handle, CURLOPT_HEADER, 1);

$res = curl_exec($curl_handle);

print_r(curl_getinfo($curl_handle));

if ($res === false) throw new Exception('Curl error: '.curl_error($ch));
$dec = json_decode($res, true);
curl_close($curl_handle);

【讨论】:

  • [http_code] => 429 : Too Many Requests,steamcommunity.com 请求限制,你只是缓存并发送低请求
猜你喜欢
  • 2014-03-27
  • 2020-03-06
  • 2015-06-24
  • 2020-02-04
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 2022-11-08
  • 1970-01-01
相关资源
最近更新 更多