2017-08-09 51 views
0

我必須向IGDB API發出一千個請求,並且我正在解決這個問題。每次運行我的腳本時,它都會加載一段時間,然後我的網站主機告訴我「錯誤:出現問題......似乎出現了問題。」 (我知道的不是很有幫助)。如何在PHP中正確地向一個API發出一千個請求

由於我認爲問題來自於請求的數量,我試圖減少它,但我下降到60個請求,每個請求間隔4秒,但仍然沒有成功。

我最新的嘗試:

$splice = array_splice($array, 0, 60); 

foreach($splice as $key => $value){ 

    $request = wp_remote_get('https://igdbcom-internet-game-database-v1.p.mashape.com/games/?fields=*&search='.$value['Name'], 
       array('headers' => array( 
          'Accept' => 'application/json', 
          'X-Mashape-Key' => 'Key'))); 

    $body = wp_remote_retrieve_body($request); 

    $data_api = json_decode($body, true); 

    sleep(4); 

} 

會有人知道我做錯了什麼?我正在用盡想法......

+0

你可能沒有做錯任何事,除非你陷入請求超時。 一般來說 - 網頁服務器(Apache,Nginx等)有一段時間,它會在顯示'錯誤'頁面之前等待腳本的任何響應。另外,PHP本身也有時間限制。 從PHP端你可以設置'set_time_limit(0)'來禁用它。從Web服務器端 - 您可能無法更改它,具體取決於您的提供商。 一般而言,您應該將其作爲控制檯命令而不是網頁。 –

+1

你爲什麼要嘗試從CMS內的網頁執行批量導入???? !!!!!! – symcbean

回答

0

這很可能不過是來自PHP或服務器的超時響應。 雖然有辦法繞過這些證券,但它們並非沒有用處。

您應該使用CLI執行貨物查詢,而不是CGI。 CGI訪問是針對普通用戶的,無論他們的角色/特權如何。作爲一名開發人員,您可以訪問代碼並訪問服務器(或者至少您的系統管理員會在團隊中工作)。你應該使用命令行來完成這些查詢。它會花費更少的時間,失敗的機會會更少,並且您將立即打印錯誤日誌,除非您將它們重定向到文件。

+1

對不起,這個週末我不在家,但感謝您的建議! 我現在使用MobaXterm作爲SSH客戶端來嘗試執行這些查詢。我有一些麻煩發送這樣的請求,但這是一個不同的問題。 再次感謝! – Adrien

相關問題