如何用PHP解决"Connection timed out after 60051 milliseconds" cURL?



我正在尝试使用 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

最新更新