2017-04-14 82 views
0

我想從最近使用cURL的51個URL中獲得51個JSON數據,最近我被一個連接超時問題&卡住了,它顯示數據返回bool(false)。如何解決「60051毫秒後連接超時」cURL與PHP?

下面是錯誤消息:

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); 
      } 
} 

每當我運行此代碼2個隨機網址從51點返回的每一次這個錯誤,因此我不獲取任何JSON數據

可能的解決方案是什麼?

+0

可能是您遇到了來自服務器的評級限制。在你短時間內提出這麼多要求後,它可能會暫時禁止你。雖然這將是一個相當低的限制...... – ChristianM

回答

0

,如果你想提高腳本執行的期限,然後用這個

set_time_limit(seconds); 

但可以有一些其他的問題,如鏈接可能不會在所有的響應,你也可以手動檢查2給出錯誤的網址

+0

我已經單獨檢查了所有51個網址,他們每個人都在工作。 –

+0

然後將時間限制增加到100秒並查看是否有效 – adam

+0

也可以使用set_time_limit(0)//無限制 – adam