Forum Clubic

[PHP] Problème de gestion du cache [Résolu] - Comment définir s'il est expiré

:hello:

Je suis en train de me faire mon lecteur de RSS en PHP.

Je lis le fichier et insère les infos dans une base de donnée, je les lis ensuite.
Et je ne relit le fichier RSS que s’il a changé, grâce aux header Last-Modified.

Pour le rss de Clubic, pas de problème, c’est un fichier et il n’y a pas de problème.

Par contre pour TheLinuxFr qui est géré avec Xoops, le fichier est recréé à chaque fois en PHP, donc pas de date de modification.

Alors j’ai un problème, si je veux voir les news, je devrais parser le fichier à chaque ouverture de mon lecteur, et je ne le veux pas parce que 4a prend un temps énorme.

Je ne veux pas non plus utiliser de cron.

Donc, comment définir si un fichier a été modifié ?

pour l’instant j’ai trouvé ça

$filemtime = filemtime("cache/$md5");
	if(!file_exists("cache/$md5") || $date_modif > $filemtime || ($date_modif == 0 && time() > ($filemtime + 3600))) {

est-ce un bon moyen?

quelqu’un a une autre solution ?

Plutôt que te baser sur cet entête, tu as qu’à conserver la date de dernière lecture, non?

et comment je sais s’il a été modifié ?

Tu ne vérifie pas qu’il est modifié. Tu le mets à jour automatiquement au bout d’un certain temps.

C’est ce que je fait pour les fichiers qui n’ont pas de date.

mais pour les autres, ça voudrait dire que je fait la mise à jour même s’il n’y a rien de nouveau, ça prend du temps…

Dans ce cas, tu fais des cas spéciaux :slight_smile: