Soucis sur des flux rss me donnant des pages en 404!

WRInaute passionné
Bonjour,

Je viens de m'apercevoir dans "Outils pour les webmasters de GG" que j'avais un nombre impressionnant d'url introuvable sur mon site et ceci étant dut aux flux rss que j'indexe et qui comporte des erreurs dans leurs url ...

J'utilise le log. magpierss pour l'affichage des flux rss et je ne sais si il y a possibilité de "bloqué" ou autre , les url pourris qui me cause des 404 en pagaille ..

Si vous avez des idées, je suis preneur :).
Merki
 
WRInaute discret
Bonjour,

Pour ma part j'utilise simpleXML pour la lecteure de flux RSS. Avant de charger / interroger un flux je regarde si il est disponible . Pour cela j'utilise la librairie CURL et la notion de TIMEOUT.

@+
 
WRInaute accro
tryan a dit:
Si vous avez des idées, je suis preneur :).

t'envoie un ptit lutin :)

ou tu passes par les fonctions curl, ptit snipt ici

test [http_code], si il est a 200 c'est que la page que tu tire du flux est en ligne.

Pour ce faire, la premiere solution est de stoker ton flux en base au préalable pour le tester avant de le publier. cette solution permet aussi de faire une mise en cache.

L'autre solution plus rapide mais couteuse en ressources serveur est de ne stocker que les urls pourris en base avec un script externe et de faire une recherche avec in_array dans la base avant de publier chaque url.
 
WRInaute discret
Autre méthode :
Code:
  $ch = curl_init($url); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  curl_setopt($ch, CURLOPT_USERAGENT, "PHP script"); 
  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
  $page    = curl_exec($ch); 
  $CurlErr = curl_error($ch); 
  curl_close($ch); 
  if ($CurlErr) return null;  // on peut gérer le type d'erreur
  $LecteurRSS = simplexml_load_file($url);
......

Avec $url, L'URL du flux RSS et $timeout Nbre de secondes du timeout.

Exemple de mise en oeuvre : Météo Département de l'Eure

Et je suis en train voir pour effectivement mettre le flux en cache.
Ainsi je minimise les ressources serveur en interrogeant le serveur de flux RSS que toutes les 30 minutes par exemple.
 
Discussions similaires
Haut