Page 1 sur 2
Problème cache de flux rss chez free
Posté : 22 mai 2006, 23:14
par pirquessa
Bonjour,
J'ai plusieur flux rss sur mon site
www.Actu-Lan.com dont un avec beaucoup d'options. Ce flux étant trés demandé, (
http://www.actu-lan.com/actu_rss.html) j'ai mis en place un système de cache hebergé chez free.
Le système :
On sauvegarde le fichier generé par actu-lan.com sur le ftp free si il n'existe pas lors de l'appel puis on le conserve et si il est vieux de plus de X secondes, on le remplace.
Le système marche plutot bien il me semble. Cependant, on me signale des bugs :
en fait aléatoirement le flux n'est pas disponible, c'est le cas aussi a ce moment la sur votre site
le problème est que ca nous bug la page accueil
ca arrive aléatoirement puis ca marche
Une personne m'a dit que free n'accepté que 3 acces simultanés...
Pouvez vous m'aider à localiser mon problème ?
Merci beaucoup pour votre aide
Pirquessa
Posté : 23 mai 2006, 02:01
par alexbad
Si c'est vrai que Free n'accepte que 3 accès simultanés, pourquoi chercher

Tu peux probablement t'informer auprès de free, pour ma part j'ai cherché sur le web mais j'ai rien trouvé.
Posté : 23 mai 2006, 17:13
par pirquessa
Ben j'ai aussi cherché, mais rien ne confirmé cette option ....
Posté : 25 mai 2006, 22:39
par pirquessa
help me please ...

Posté : 25 mai 2006, 23:22
par Hubert Roksor
Je ne sais pas exactement comment fonctionne ton système, mais voilà comment il devrait:
- à chaque fois qu'une news est ajoutée/retirée/mise à jour, génère le fichier XML et uploade-le chez Free.
- c'est tout

N'utilise pas de PHP, n'utilise pas de base de données, juste un simple fichier statique. Reste la compression gzip... je ne connais pas la configuration de Free, il se pourrait que le fichier soit automatiquement compressé par mod_gzip ou mod_deflate d'Apache. De toutes façons, les fichiers ont l'air suffisament petits pour être transférés très rapidement.
Posté : 26 mai 2006, 11:18
par pirquessa
Ben le flux marche tres bien. Pas à chaque ajout mais par période temporaire.
Mais le problème serait une limitation des acces simultatanés par free... et ca personne n'est au courrant ... ?
Posté : 26 mai 2006, 11:39
par Hubert Roksor
Pardonne ma logique implacable, mais un programme qui fonctionne très bien mais pas tout le temps n'est pas un programme qui fonctionne très bien
Je n'ai jamais entendu parler d'une telle limitation, la personne qui t'a dit ça confond certainement avec la limitation de connexions MySQL. (qui existe sur tous les hébergeurs mutualisés) Supprime MySQL de l'équation et tout rentrera dans l'ordre. D'ailleurs, comme je le disais plus haut supprime aussi PHP à moins que tu saches comment/quand générer une réponse 304. Sinon, un fichier .xml tout bête est de très très loin la meilleure solution. Éventuellement, tu peux aussi utiliser ".rss" comme extension et ajouter ça dans un .htaccess dans le répertoire où il est stocké:
Posté : 26 mai 2006, 17:53
par pirquessa
Il n'y a pas de Mysql du tout :
Code : Tout sélectionner
<?php
include('config.php');
Header("content-type: application/xml");
if(@filectime('rss/news.xml') + $nbr_minute <= time())
{
@unlink('rss/news.xml');
if(FALSE === file_exists('news/news.xml'))
{
file_put_contents('rss/news.xml', file_get_contents('http://www.actu-lan.com/rss/news.php'));
}
}
echo file_get_contents('rss/news.xml');
?>
Voila tout le code, tu remarquera qu'il est trés simple ... le fichier config contient les différentes options pour tous les flux ...
Donc le jecomprend pas pourquoi le gars me dit ca ...

Posté : 28 mai 2006, 15:48
par Hubert Roksor
Err... es-tu sûr que ce script fonctionne correctement ? Parce que si $nbr_minute est un nombre de minute ça ne va pas avec time() qui lui est en secondes. Ensuite, pourquoi tester la présence de "news/news.xml" ? si ce fichier existe il empêche la mise à jour du flux
Mon conseil, fais ce que je préconise dans mes précedent post: à chaque mise à jour des news, regénère un fichier ("news.rss") que tu uploades par FTP chez Free, et utilise un .htaccess avec "AddType rss application/rss+xml" pour indiquer le type de fichier. Au pire, si Fre n'aime pas AddType, nomme le fichier "rss.xml" ça devrait marcher aussi. De cette façon, tu n'auras plus de problèmes avec PHP ou avec le firewall de Free (les hébergeurs mutualisés n'aiment pas trop les fopen() sur des URLs).
Posté : 28 mai 2006, 15:57
par Hubert Roksor
Au fait, combien de hits par jour as-tu sur ces flux RSS ? Parce que tout ce que j'ai dit peut s'appliquer en local, tu n'es pas obligé d'utiliser PHP pour tous tes flux, surtout s'ils changent rarement. De plus, tes scripts devraient absolument générer une réponse 304 à chaque fois que cela est possible (voir
RFC 2616).
Autre chose, ton fichier CSS (
http://www.actu-lan.com/pages/menu.css) contient une référence à une image qui n'existe pas. (
http://www.actu-lan.com/pages/images/fleche.GIF)
Posté : 28 mai 2006, 22:09
par pirquessa
Ben on teste si le fichier à été récupéré depuis moins de $nbr_minute (qui est bien en minutes *60

) si il est trop vieux on supprime et on le re prend.
Sinon si le fichier est bon on l'inclu ...
Le script marche tres bien en local.
Je ne peux pas faire ce que tu propose. En effet, mon flux rss de lan propose de multiples options qui font qu'il y aurait une infinité de flux à uploader ...
Avec ce système on oploade que les flux dont les adresses sont demandés
(ce script est un dérivé de celui dont je te parle mais c'est exactement le meme fonctionnement)
Tu as la tous les fichier rss stockés ici :
http://actulan.free.fr/dates.php5
Raaa, encore une personne qui vient de me dire que les rss marchaient pas ... Je comprend pas pourquoi ...
http://actulan.free.fr/news.php5
http://actulan.free.fr/lans.php5
http://actulan.free.fr/forum.php5
Toutes les options et infos :
http://www.actu-lan.com/actu_rss.html
Posté : 29 mai 2006, 15:35
par Hubert Roksor
Essaie de relire mes précédents posts... réponse 304, nombre de hits.
J'ai regardé sur le site, le code pour inclure le fil RSS sur un site est malheureusement extrêmement inefficace parce qu'à chaque page vue l'intégralité du flux RSS est retéléchargée de chez Free. Si tu ne peux pas utiliser de fichiers statiques et faire en sorte d'utiliser des réponses 304 (voire 226) alors ton problème est insoluble, désolé. (enfin, insoluble sans investissement, si tu achètes un serveur dédié pour ton flux RSS ça marchera mieux)
Posté : 29 mai 2006, 23:04
par alexbad
Je ne sais pas exactement comment fonctionne ton système, mais voilà comment il devrait:
- à chaque fois qu'une news est ajoutée/retirée/mise à jour, génère le fichier XML et uploade-le chez Free.
- c'est tout

Ouais, et le fichier peut être généré automatiquement, ce qui devient très intéressant, évitant d'avoir à faire des manipulations manuelles chaque fois.
Posté : 30 mai 2006, 06:58
par pirquessa
Je ne peux pas faire ce que tu propose. En effet, mon flux rss de lan propose de multiples options qui font qu'il y aurait une infinité de flux à uploader ...
Avec ce système on oploade que les flux dont les adresses sont demandés
Je vais vous donner le script qui fait le cache du flux aux nombreuses options et vous verrez que je suis obligé de fonctionner comme ca :
Code : Tout sélectionner
<?php
include('config.php');
Header("content-type: application/xml");
$url = (!isset($_GET['dep']) AND !isset($_GET['jeu']) AND !isset($_GET['mois']) AND !isset($_GET['annee']) AND !isset($_GET['annee'])) ? '' : '';
$url .= (isset($_GET['dep']) OR isset($_GET['dep']) OR isset($_GET['jeu']) OR isset($_GET['mois']) OR isset($_GET['annee'])) ? '?' : '';
$url .= (isset($_GET['dep'])) ? 'dep='.$_GET['dep'] : '';
$url .= (isset($_GET['jeu'])) ? '&jeu='.$_GET['jeu'] : '';
$url .= (isset($_GET['mois'])) ? '&mois='.$_GET['mois'] : '';
$url .= (isset($_GET['annee'])) ? '&annee='.$_GET['annee'] : '';
$url = ($url{1} == "&") ? substr($url, 0, 1).substr($url, 2) : $url;
$fichier = str_replace('&','_', $url);
$fichier = str_replace('=','-', $fichier);
$fichier = str_replace('?','', $fichier);
$fichier = ("" == $url) ? 'lans' : 'lans_'.$fichier;
if(@filectime('rss/'.$fichier.'.xml') + $nbr_minute <= time())
{
@unlink('rss/'.$fichier.'.xml');
if(FALSE === file_exists('rss/'.$fichier.'.xml'))
{
file_put_contents('rss/'.$fichier.'.xml', file_get_contents('http://www.actu-lan.com/rss/lans.php'.$url));
}
}
echo file_get_contents('rss/'.$fichier.'.xml');
?>
Enfin, je vois pas d'autres solution en tout cas ...
Je vois pas d'ou viendrait le problème mis à part si free limite le nombre d'acces simultanés à une page ...
EDIT:
Il n'est pas embetant de mettre les options dans l'adresse car une fois que le site à choisit ses options, il en change rarement ...
Posté : 30 mai 2006, 16:31
par Invité
En fait, je ne pense pas que tu abordes le probleme de la bonne maniere...
A la base, tu veux faire un cache chez Free du fait qu'un grand nombre de connexions se fait sur ton feed RSS. Le cache n'a d'interet que si le nombre de personnes accedant a un feed particulier est important.
Seulement, d'un autre cote tu nous expliques que ton feed a de tes nombreuses options... ce qui tend a nous faire croire que chaque utilisateur utilise ton feed avec des options differentes... auquel cas, un cache n'a aucune utilite.
Au final, de deux choses l'une :
- soit tu as des dizaines d'utilisateurs qui utilisent les memes options en simultané et tu peux effectivement faire un cache (mais pas géré avec des timeouts qui sont performants)
- soit chaque utilisateur a des parametres differents... auquel cas le probleme ne sera pas resolu avec un cache, la seule solution etant d'optimiser la generation du feed rss