8791 sujets

Développement web côté serveur, CMS

Pages :
Salut à vous,

Petite question pas bien méchante qui me trotte en tête.

Je propose un flux RSS de mes actualités sur mon site Internet. Je construis ce flux à la demande en PHP : conséquence, ma page s'appelle comme ceci rss.php.

Or, je me rends compte que sur beaucoup de site, on retrouve plutôt ceci rss.xml

Petite précision, je ne vois aucune différence à l'affichage entre leur flux et le mien si ce n'est l'extension de la page. De mon côté, tous mes en-têtes sont correctement définis (à savoir le XML).

Ma question : est-ce une erreur de créer et de fournir mon flux directement depuis mon code PHP ou pas ? Si oui, la bonne pratique serait de créer sur mon serveur Web en PHP un fichier "rss.xml" contenant mon flux ?

Merci d'avance !
Difficile de créer un flux RSS autrement qu'en php, mais c'est vrai que les flux sont mieux reconnus quand ils sont en .xml .

La solution pourrait par exemple de garder ton fichier php, via ton .htaccess de "renvoyer" rss.php en tant que rss.xml et d'appeller rss.xml dans tes pages et liens. Je sens que je ne suis pas clair.

J'ai tapé "build rss php" dans google, pas mal de réponses, notament celle ci qui m'a l'air bien : http://www.xul.fr/en-xml-rss.html

N'hésites pas à regarder les autres réponses biensûr Smiley cligne
Salut,

d'un point de vue technique c'est kif/kif. Par contre on peut se poser la question de l'utilité d'une requête en base à chaque appel de récupération du flux : pourquoi ne pas regénérer un vrai fichier xml (ou rss) à chaque ajout d'une actualité ? Du coup le fichier est statique avec l'extension qui va bien.
Tout à fait, je ne sais juste pas comment ça se passe en vrai dans la pratique pour un vrai site de production. Comment ça se passe ? Smiley biggrin lol

Donc lorsque j'ajoute une news sur mon site Internet, je pourrais en profiter (directement après dans mon traitement) pour créer ou mettre à jour mon fichier "rss.xml" ?

Sinon, c'est en effet kif/kif car le validateur RSS Feed ne me signale aucun problème et ma page fonctionne correctement sur tous les navigateurs Web.
Alphonse a écrit :
Tout à fait, je ne sais juste pas comment ça se passe en vrai dans la pratique pour un vrai site de production. Comment ça se passe ?
Ben je dirais qu'il n'y a pas de règle mais encore une fois ça semble plus logique de générer un fichier .xml (ou .rss) à chaque ajout d'une actu plutôt que de générer un flux dynamiquement (surtout pour un site très connu genre lemonde.fr ou autre) ce qui génère un nombre plus ou moins grand (démesuré ?) de requêtes inutiles.

Alphonse a écrit :
Donc lorsque j'ajoute une news sur mon site Internet, je pourrais en profiter (directement après dans mon traitement) pour créer ou mettre à jour mon fichier "rss.xml" ?
Yep !
OK je te remercie. Je mets à Résolu le sujet car j'ai eu ma réponse.

edit: résolu !
Modifié par Alphonse (22 Feb 2010 - 10:24)
Sur dotclear2, il y a envoi d'entête http (date de mise-à-jour, type/mime) avec un nombre limité de billets (20) dans le flux. Pas la peine de sortir toutes la base de données. Exemple. Smiley cligne

P.S. : chez moi j'ai ajouté une extension qui va créer un cache statique pour le site (flux compris), je triche un peu donc...
Modifié par Patidou (22 Feb 2010 - 13:42)
Je pense que les différentes solutions dépendent aussi beaucoup du nombre de flux qu'on veut proposer. Si c'est juste pour la liste des derniers articles par exemple, générer le fichier à chaque modification est surement plus intelligent (attention cela dit au fichier généré, si par exemple, le contenu de la nouvelle version est plus court que l'ancien, on peut se retrouver avec 2 balises de fermeture ou autre)...

Par contre si on veut proposer un grand nombre de flux (exempl flux des articles, flux des commentaires général, flux des commentaires de chaque article, etc etc) ça devient souvent bien plus simple à gérer de générer le flux à la volée.
Intéressant, je n'ai pas pensé à utiliser un système de cache sur mon site Internet. Ca peut être utile, au niveau personnel, de mettre ce genre de système en place. Je dispose d'un serveur dedié, MemCache semble être l'extension à ajouter ?

En ce qui me concerne, je crée un flux uniquement pour lister mes 15 derniers articles créés. Mon site ne reçoit pas suffisamment de trafic et de commentaires pour créer d'autres flux.

Quoi qu'il en soit, je souhaite avoir mes flux avec comme extension de fichier : *.xml ou *.rss
En créant mon flux à la volée, ma page terminent forcément par l'extension *.php sachant que je ne fais pas d'URL rewriting.
Dans ce cas le générer uniquement quand tu ajoute/supprime/edit est la meilleure solution Smiley smile

Dans ce cas, il faut bien faire attention : complètement vider le fichier, voire le supprimer, avant de réécrire, sinon ça peut planter.

RSS v1 :
->200 caractères

ensuite tu ajoutes un article asez court, pour dire que tu pars en vacances au ski par exemple

RSS v2 :
-> 120 caractères + 80 caractère provenant de RSS v1 qui ne sont pas ecrasés ni supprimés.

Ce genre de bug qu'on anticipe généralement pas peut rendre le fichier totalement illisible, donc il faut y penser Smiley lol
Alphonse a écrit :
Intéressant, je n'ai pas pensé à utiliser un système de cache sur mon site Internet. Ca peut être utile, au niveau personnel, de mettre ce genre de système en place. Je dispose d'un serveur dedié, MemCache semble être l'extension à ajouter ?


J'utilise static cache car je suis sur un mutualisé. Sinon memcache est plus performant quand c'est disponible. Bon c'était pas vraiment nécessaire (30 visites par jour Smiley lol ) mais on voit une différence.

Alphonse a écrit :
En ce qui me concerne, je crée un flux uniquement pour lister mes 15 derniers articles créés. Mon site ne reçoit pas suffisamment de trafic et de commentaires pour créer d'autres flux.

Quoi qu'il en soit, je souhaite avoir mes flux avec comme extension de fichier : *.xml ou *.rss
En créant mon flux à la volée, ma page terminent forcément par l'extension *.php sachant que je ne fais pas d'URL rewriting.


Tu peux nommer ton fichier atom.xml.php et si multiview est actif tu fais un lien sur atom.xml. Mais faudra quand même envoyer les entêtes. Smiley cligne
Modifié par Patidou (22 Feb 2010 - 14:19)
Mmmh, le multiview (que je ne connaissais pas et qui a l'air pas mal) ne me tente pas vraiment... Je n'ai pas envie de modifier le comportement de mon serveur Web à ce niveau là.

En ce qui me concerne, je ne suis même pas à 10 visites par jour Smiley cligne Donc, je me prends la tête pour pas grand chose mais ça peut m'être utile à titre personnel maintenant et surement professionnel à plus long terme.

Par contre, je n'ai pas compris le bug expliqué de HammHetfield...
Je suis sur un serveur dedié mais ce n'est pas mon serveur. Du coup, je ne sais pas trop vérifier.

Par contre, j'ai copié/collé mon fichier rss.php et je l'ai renommé en rss.xml.php. Ensuite, j'ai appelé la page comme ceci : http://site.internet.com/rss.xml

Ca ne fonctionne évidemment pas ! lol

Tu entends quoi en disant : Mais faudra quand même envoyer les entêtes. ? Mes en-têtes sont correctement définis dans ma page mais apparemment, tu parles d'autre chose ?
Oui je parle des headers http que tu peux envoyer en php, pour indiquer (entre autres) la fraîcheur des données, son type/mime et l'encodage.

Chez moi c'est :

Last-Modified: Thu, 28 Jan 2010 21:00:13 GMT
Content-Type: application/atom+xml; charset=UTF-8


Pour activer multiview dans fichier .htaccess :

Options +MultiViews

Modifié par Patidou (22 Feb 2010 - 14:54)
Au niveau des en-têtes définis dans le PHP, je n'ai défini que celui-ci :
header('Content-Type: text/xml; charset=utf-8');


Je vais modifier le "text/xml" en "application/atom+xml".
Cool, ça fonctionne Smiley cligne Je ne pensais pas que ça aurait aussi simple.

Toutefois, je vais quand même voir du côté de MemCache quand j'aurai plus de temps !

Merci beaucoup à toi Smiley smile
Je ne sais pas si tu l'as mis mais le last-modified est important pour l'agent utilisateur qui va lire ton flux, pour savoir si il doit recharger le flux ou pas.
Modifié par Patidou (22 Feb 2010 - 15:04)
Pages :