Page 1 sur 1

Chargement long à cause d'une fonction RSS

Posté : 24 janv. 2014, 15:06
par Yünalescä
Bonjour,

Je m'excuse par avance si ce sujet est mal placé (et/où que ce ne soit pas le bon endroit)
Cela fait pratiquement deux semaines que je suis heurtée à un problème majeur. Je travaille actuellement sur Wordpress 3.8 et j'ai développé un code PHP qui me pose problème. Pour vous expliquer mon problème, j'ai actuellement 4 sites internet (Wordpress pour les 4) et je développe actuellement un "portail" qui affiche les données de mes quatre autre sites.

Actuellement, je suis sur une fonction (dernière étape de mon développement) qui récupère le nombre de commentaire d'un flux RSS d'un site distant : celle -ci fonctionne mais le temps de chargement est très long vu qu'il y'a plusieurs articles.

Code : Tout sélectionner

function recupNbComment($lien_article,$titre) { $lien_article = ("$lien_article/feed"); $url = $lien_article; $rss = simplexml_load_file($url); $mois = get_the_time('m'); $annee = get_the_time('Y'); $categorie_site = recupererCategorie(); if (@simplexml_load_file($url)) { for ($x=0; $x<200; $x++) { if (!isset($rss->channel[0]->item[$x])){ break;} } if ($categorie_site == 'Toto') return $x; if ($categorie_site == 'Tata') return $x; } if ($rss == false) { return 'Erreur'; } }
(J'ai allégé le code mais l'esprit est là). Le problème est que le temps de chargement est long vu que je fais passer "lien_article" donc on vérifie plusieurs fois pour afficher le nombre de commentaire de mon Flux RSS d'un site distant.

Je fais appel à vous pour répondre à plusieurs interrogations :

1. Est-il possible de mettre la fonction en cache et comment ? Comme ça, l'appel ne se fait qu'une fois par heure (ou jour) et le temps de chargement serait diminué ?
2. Avez-vous un autre moyen de récupérer les données d'un flux RSS commentaire wordpress en vérifiant une fois par heure (par exemple)
3. J'ai pensé à une connexion vers une base de donnée distante mais à mon avis ça sera le même problème vu qu'il faut connecter 4 BDD à chaque fois ?

Si vous avez des solutions, je suis preneuse de tout =)

Re: Chargement long à cause d'une fonction RSS

Posté : 24 janv. 2014, 16:04
par moogli
salut,

1/ oui c'est possible, mais c'est le résultat de la fonction que l'on met en cache et pas la fonction ;)
- soit tu génère le html à afficher et tu stock dans un fichier qui sera affichée
- soit tu stock en base (celle du portail) et tu fait le select qui va bien pour afficher les infos)

2/ Tâches planifiés sous windows, sur un serveur unic cela s'appel CRON. cela va te permettre d'executer ton script php suivant la période que tu souhaite.

3/ l'accès base le plus génant c'est surtout que si les site ne sont pas chez le meme hébergeur tu as peux de chances de pouvoir t'y connecter (éviter les problèmes de sécurité sur les serveur de données).

suivant ce que tu veux au final tu peux aussi passer par une feuille xslt pour afficher le flux directement sans le parser.

perso je serais plus pour la solution du cache + cron. l'avantage c'est que cela tourne en arrière plan et ne gène pas ton site.

il faut bien faire attention à ne pas récupérer des chose trop vieille.
L'avantage de la table qui contient les infos c'est que tu peux gérer cela toi même.

Attention si tu récupère le flux rss et que celui ci n'est jamais réduit, quoi qu'il arrive cela prendra de plus en plus de temps à générer le cache.


@+

Re: Chargement long à cause d'une fonction RSS

Posté : 24 janv. 2014, 16:24
par Yünalescä
Hello,
Merci pour ta réponse rapide =)

1. Oui, excuse moi : le résultat de ma fonction (donc en return je suppose) à mettre en cache. J'ai recherché sur internet à faire ça mais j'ai pas trouvé d'élément de réponse pour la mise en cache des données sans refaire appel une nouvelle fois à ma fonction.
--- Je crée un fichier : result.php et je fais par exemple <?php echo MaFonction() ?> mais comment ça se passe pour le mettre en cache ? Y'a une fonction PHP toute trouvée ? ^^
--- Je maîtrise pas vraiment ce domaine, mais la fonction RSS sera utilisée à chaque fois que j'appelle ma fonction en "stockant" les infos dans la base de donnée non ?

2. Oulà :) Tu m'as perdu là. J'héberge mon site chez OVH et concernant ce "CRON" j'ai déjà entendu parler mais je ne saurai pas mettre en pratique.

3. C'est sur le même hébergeur (OVH), il existe une table "comments_count" que je pourrai exploiter mais comme tu dis, je ne préfère pas me fier à la chance de s'y connecter en plus des pb de sécurité.

Après, c'est le problème des flux RSS :/ Mais je n'ai pas vraiment de choix je pense...

Quoi qu'il en soit, merci pour ta réponse !