2009-06-16 7 views
0

Da Twitter heute nicht verfügbar ist, habe ich darüber nachgedacht, wie man Aufrufe einer API am besten behandelt, wenn sie nicht funktioniert. Wenn ich CURL verwende, um ihre API aufzurufen, wie verursache ich, dass das Skript schnell versagt und die Fehler behandelt, um die Anwendung nicht zu verlangsamen?Wie man eine heruntergekommene API elegant behandelt

Antwort

2

Vielleicht verwenden Sie eine Art Cache, ob Twitter ist nach oben oder unten. Protokollieren Sie ungültige Antworten von der API in einer Datenbank oder serverseitigen Datei. Sobald Sie zwei/drei/einige andere ungültige Antworten in Folge erhalten haben, deaktivieren Sie alle Anfragen an die API für x Zeit.

Nach x Zeit versuchen Sie eine Anfrage, wenn es immer noch inaktiv ist, wieder für x Minuten deaktivieren.

Wenn Ihr Server CRON-Jobs ausführen kann, sollten Sie ein Skript erstellen, das die API alle paar Minuten auf eine gültige Antwort überprüft. Wenn es feststellt, dass es nicht funktioniert, deaktivieren Sie die Anfragen, bis sie wieder verfügbar sind. Zumindest würde in diesem Fall der Server die Tests durchführen, und die Benutzer müssen nicht die Versuchskaninchen sein.

2

Verwenden curl_setopt

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

Wenn Sie curl> = 7.16.2 und PHP> = 5.2.3 gibt es CURLOPT_CONNECTTIMEOUT_MS

+0

Das einzige Problem ist, dass es nicht in der Lage ist, den Unterschied zwischen einer langsamen Verbindung und einer abgestürzten API zu unterscheiden. –

+0

Würde dies wahr werden, wenn das Zeitlimit überschritten würde? – Tim

+0

Eine fatal langsame Verbindung ist genauso schlimm wie eine heruntergekommene API. Vielleicht sind 3+ Sekunden ein großzügigeres Timeout. – Kekoa

2

Verwenden curl_getinfo die cURL Antwortcode oder Inhaltslänge zu erhalten und überprüfe diese.

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

Ich habe mich tatsächlich entschieden, mit einer Kombination von zu gehen zurückgegebene Codes und die andere Antwort, einen Chron-Job auszuführen, um den Site-Status zu überprüfen. – Tim

Verwandte Themen