0 votes

Comment gérer gracieusement une API en panne

Avec la panne de Twitter aujourd'hui, j'ai réfléchi à la meilleure façon de gérer les appels à une API lorsqu'elle est en panne. Si j'utilise CURL pour appeler leur API, comment faire en sorte que le script échoue rapidement et gère les erreurs afin de ne pas ralentir l'application ?

2voto

jitter Points 35805

Utilisez curl_setopt

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

Si vous utilisez curl >= 7.16.2 et PHP >= 5.2.3 il y a CURLOPT_CONNECTTIMEOUT_MS

2voto

jjclarkson Points 3370

Utilisez curl_getinfo pour obtenir le code de réponse cURL ou la longueur du contenu et les vérifier.

$HttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

2voto

Ian Elliott Points 3937

Peut-être utiliser une sorte de cache pour savoir si twitter est actif ou passif. Enregistrez les réponses invalides de l'api dans une base de données ou un fichier côté serveur. Une fois que vous obtenez deux/trois/une autre quantité de réponses invalides à la suite, désactivez toutes les demandes à l'api pendant x temps.

Après un certain temps, tentez une requête, s'il est toujours hors service, désactivez-le à nouveau pendant x minutes.

Si votre serveur peut exécuter des tâches CRON, pensez à faire un script qui vérifie l'api pour une réponse valide toutes les quelques minutes. S'il découvre qu'elle est en panne, il désactive les demandes jusqu'à ce qu'elle soit rétablie. Au moins dans ce cas, le serveur ferait les tests et les utilisateurs n'auront pas à être les cobayes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X