Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决;连接在60051毫秒后超时”;用PHP卷曲?_Php_Json_Curl_Connection Timeout - Fatal编程技术网

如何解决;连接在60051毫秒后超时”;用PHP卷曲?

如何解决;连接在60051毫秒后超时”;用PHP卷曲?,php,json,curl,connection-timeout,Php,Json,Curl,Connection Timeout,我试图在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 => $stat

我试图在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);
            }
}
foreach($this->state\u列表为$short\u code=>state\u name\u值){
//echo“Key=“.$short\u code.”,Value=“.$state\u name\u Value;
$legiator_of_state_Url=”https://openstates.org/api/v1/legislators/?state=“$short_code.”&chamber=upper”;
回声“URL:.$legiator\u of_state\u URL.”
; $curl=curl_init(); curl_setopt($curl,CURLOPT_URL,$u州立法者_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\u exec($curl); 回显“Curl Info:.Curl_getinfo($Curl)。”
; echo“Curl Error no:”.Curl_errno($Curl)。“
”; 回显“Curl错误消息:“.Curl_错误($Curl)。”
; curl_close($curl); //打印(json解码($feed,true)); $jsonarray=json_decode($feed,true); echo“Count Value:.Count($jsonarray); if(计数($jsonarray)==0) { var_dump($feed); } }
每次我运行这段代码时,51个随机URL中的2个返回这个错误,因此我没有得到任何JSON数据


解决方案是什么?

如果要增加脚本执行的时间限制,请使用此选项

set_time_limit(seconds);

但是可能还有一些其他问题,比如url可能根本没有响应,您也可以手动检查出现错误的2个url

我已经分别检查了所有51个url,每个url都正常工作。然后将时间限制增加到100秒,看看它是否正常工作。您也可以使用set\u time\u limit(0)//no limittry set\u time\u limit(秒);和curl_setopt($curl,CURLOPT_TIMEOUT,120);curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,100);仍然出现错误。可能您遇到了服务器的分级限制。在您连续短时间内发出这么多请求后,它可能会暂时禁止您。尽管这是一个相当低的限制。。。。