2009-06-16 11 views
0

twitterが今日ダウンしているので、APIがダウンしているときの呼び出しを最適に処理する方法を考えていました。 CURLを使用してAPIを呼び出す場合、スクリプトをすばやく失敗させ、アプリケーションを遅くしないようにエラーを処理するにはどうすればよいですか?落ちたAPIを正常に処理する方法

答えて

2

おそらく、Twitterがアップまたはダウンしているかどうかにかかわらず、キャッシュの種類を使用します。データベースまたはサーバー側のファイルでapiからの無効な応答を記録します。行の中に2/3 /何らかの他の無効な応答が得られたら、x時間だけapiへのすべてのリクエストを無効にします。

x時間が経過すると、依然としてダウンしている場合はリクエストを再試行し、もう一度x分間は無効にします。

サーバーでCRONジョブを実行できる場合は、数分おきに有効な応答を確認するスクリプトを作成することを検討してください。停止していることがわかったら、バックアップが完了するまでリクエストを無効にします。少なくともこの場合、サーバーはテストを行い、ユーザーはモルモットである必要はありません。

2

使用curl_setopt

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

あなたはカール> = 7.16.2およびPHPを使用する場合> = 5.2.3 CURLOPT_CONNECTTIMEOUT_MS

+0

唯一の問題は、低速接続と低下したAPIの違いを伝えることができないことです。 –

+0

タイムアウトした場合はtrueを返しますか? – Tim

+0

致命的に遅い接続は、ダウンしたAPIと同じくらい悪いです。たぶん3+秒はより寛大なタイムアウトです。 – Kekoa

2

使用curl_getinfoはcURLのレスポンスコードやコンテンツの長さを取得することがあり、それらをチェックしてください。

$HttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
+0

私は実際に返されたコードと、サイトステータスをチェックするためのクロールジョブを実行するもう1つの答え。 – Tim

関連する問題