我正在尝试使用 php 中的 cURL 从 51 个 URL 获取 JSON 数据,最近,我遇到了连接超时问题,它显示数据返回 bool(false(。
这是错误消息:
Curl Error no :28
Curl error message :Connection timed out after 60051 milliseconds
Count Value : 0
bool(false)
这是我的代码:
foreach($this->state_list as $short_code => $state_name_value) {
// echo "Key=" .$short_code . ", Value=" . $state_name_value;
$legislator_of_state_Url = "https://openstates.org/api/v1/legislators/?state=".$short_code."&chamber=upper";
echo "URL : ".$legislator_of_state_Url."<br/>";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$legislator_of_state_Url);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl , CURLOPT_HTTPHEADER, array ('Accept: application/json'));
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,60);
$feed = curl_exec($curl);
echo "Curl Info :".curl_getinfo($curl) . '<br/>';
echo "Curl Error no :".curl_errno($curl) . '<br/>';
echo "Curl error message :".curl_error($curl) . '<br/>';
curl_close($curl);
// print_r(json_decode($feed,true));
$jsonarray = json_decode($feed, true);
echo "Count Value : ".count($jsonarray);
if(count($jsonarray) == 0)
{
var_dump($feed);
}
}
每次我运行此代码时,51 个中的 2 个随机 URL 都会返回此错误,因此我没有获得任何 JSON 数据
解决方案是什么?
如果你想增加脚本执行的时间限制,那么使用这个
set_time_limit(seconds);
但是可能存在一些其他问题,例如URL可能根本没有响应,您也可以手动检查给出错误的2个URL