PROJET AUTOBLOG


Shaarli - Mitsu'liens

Site original : Shaarli - Mitsu'liens

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

NyaaTorrents est encore down ! Et ça tombe bien :)

lundi 8 septembre 2014 à 14:02
Vu que je travaille au dépoussiérage de Magnyaa ( https://root.suumitsu.eu/wiki/doku.php?id=php:magnyaa  --oui oui la version 2 sera sur Github, tout bien), et que l'extraction des métadonnées est maintenant entièrement côté serveur (simple_html_dom et torrent-rw, je vous aime), je me devais de tester le comportement du script en cas de panne du site.

Et là, problème: NyaaTorrents dans son ensemble subit un DDoS, qui affecte tous ses serveurs. Et les enregistrements DNS sont gérés par GLUE (ns1.nyaa.se et ns2.nyaa.se voir https://fr.wikipedia.org/wiki/Domain_Name_System#Glue_records ), et que les serveurs d'autorité DNS sont les mêmes que serveurs web et tracker...

En travaillant en PHP, vous connaissez peut-être les stream context, qui permettent de définir un timeout de connexion notamment, et pareil avec cURL (CURLOPT_CONNECTTIMEOUT). Souci: tout ceci ne concerne que la phase de connexion: la phase de résolution de noms est exclue, et il faut bien 18 secondes pour que les serveurs DNS répondent !!

Une solution possible: utiliser WGET du shell, vu qu'il a une option --dns-timeout très utile.   Côté PHP:   shell_exec("wget --dns-timeout 3 -q -O - $url/?$req");
L'autre solution, si l'on veut pas dépendre du shell: hardcoder la résolution DNS ! cURL permet cela. Voici ce que je fais:  curl_setopt($c, CURLOPT_RESOLVE, array("sukebei.nyaa.se:80:188.95.48.66","www.nyaa.se:80:188.95.48.66"));
Et là on peut tranquillement mettre le timeout de connexion: curl_setopt($c, CURLOPT_CONNECTTIMEOUT ,3);

Et voilà ! Le script PHP mouline moins de 4 secondes avant de renvoyer l'erreur de connexion :)
(merci à Oros au passage, dont j'ai piqué la fonction cURL de BooruMirror)
(Permalink)
Feed is invalid - XML error: