2009-06-16 31 views
0

由於twitter今天關閉,我正在考慮如何在API停止時處理對API的調用。如果我使用CURL來調用他們的api,我該如何導致腳本快速失敗並處理錯誤,以免減慢應用程序的速度?如何優雅地處理崩潰的API

回答

2

也許使用某種緩存來確定twitter是否啓動或關閉。在數據庫或服務器端文件中記錄來自api的無效響應。一旦你連續得到兩個/三個/一些其他數量的無效響應,在x時間內禁用對api的所有請求。

經過x次的時間後,嘗試請求,如果它仍然關閉,請再次禁用x分鐘。

如果您的服務器可以運行CRON作業,請考慮製作一個腳本,每隔幾分鐘檢查一次有效響應的api。如果發現它已關閉,請禁用請求直至其恢復。至少在這種情況下,服務器將進行測試,用戶不必是豚鼠。

2

使用curl_setopt

curl_setopt($yourCurlHandle, CURLOPT_CONNECTTIMEOUT, '1'); // 1 second 

如果使用捲曲> = 7.16.2和PHP> = 5.2.3有CURLOPT_CONNECTTIMEOUT_MS

+0

唯一的問題是,它不能分辨慢速連接和關閉api之間的區別。 – 2009-06-16 22:22:55

+0

如果超時,它會返回true嗎? – Tim 2009-06-16 22:23:16

2

使用curl_getinfo獲得捲曲響應代碼或內容長度和檢查這些。

$HttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);