indiquer la date de la dernière MAJ du site... [PHP] - PHP - Programmation
Marsh Posté le 31-01-2008 à 01:49:32
Tu dois parcourrir tous les réperttoires du site, récursivement. Tu peut faire ça soit en utilisant les fonctions opendir, readdir, closedir, soit glob pour lister les fichiers d'un répertoire, la fonction is_dir te dira s'il s'agit d'un répertoire sur lequel continuer la récursion s'il ne s'agit pas d'un répertoire commençant par '.' (répertoire courant, parent, et cachés). Tu utilise ensuite la fonction filemtime pour connaître la date de dernière modification des répertoires et fichiers. La fonction récursive calcule et renvoie la date maximum.
Comme cette opération sera certainement lente, surtout s'il y a beaucoup de fichiers, et comme tu affiche la date de modification avec seulement 1 jour de précision, cette date n'a pas à être calculée à chaque demande de page. La solution est de garder la date calculée dans un fichier texte par exemple, de recalculer cette date si le fichier texte est vieux de plus de 24 heures avant d'afficher la valeur. Ainsi, le fichier texte sera recalculé 1 seule fois par jour, il faudra donc le décompter de la fonction de calcul pour qu'il ne modifie pas la dernière date de modification à lui tout seul. Pour créer/modifier un fichier texte derrière le serveur, tu dois t'assurer que le serveur a les droits en écriture sur le fichier, puis tu utilise http://php.net/file_put_contents et file_get_contents.
Marsh Posté le 31-01-2008 à 09:00:26
oulà je sens que ça va pas être simple !
merci de ton aide je vais quand même essayer
Marsh Posté le 31-01-2008 à 09:23:17
j'ai trouvé des scripts de parcours récursif d'un répertoire (dur de programmer tout a 100% en partant de 0 pour l'instant!), j'ai fais quelques adaptations pour l'utilisation que je veux en faire mais j'ai un problème: comment comparer deux dates entre elles ?
parce quand la boucle parcours les fichiers, a chaque fois j'enregistre la date du fichier testé dans une variable SEULEMENT si elle est plus récente que celle enregistrée avant (comme ça je récupere bien la date de la derniere maj que j'ai faite a mon site, quel que soit le fichier que j'ai modifié)
Marsh Posté le 31-01-2008 à 13:42:10
utilise les timestamps unix (nombre de secondes depuis le 01/01/1970), pour les comparer un simple < ou > fonctionne, et des fonctions de conversions sont nombreuses.
Marsh Posté le 31-01-2008 à 13:56:38
'tain.
Tu veux pas plutôt mettre la date dans un fichier et le mettre à jour à chaque modif? Ce serait vachement plus simple que de batailler à tout parcourir...
Marsh Posté le 02-02-2008 à 00:46:55
surtout que si a chaque page demandée par un visiteur tu parcours recusrsivement tout ton site... niveau perf ca pourrait etre sympa
Marsh Posté le 02-02-2008 à 11:40:31
nargy a écrit : Tu dois parcourrir tous les réperttoires du site, récursivement. Tu peut faire ça soit en utilisant les fonctions opendir, readdir, closedir, soit glob pour lister les fichiers d'un répertoire, la fonction is_dir te dira s'il s'agit d'un répertoire sur lequel continuer la récursion s'il ne s'agit pas d'un répertoire commençant par '.' (répertoire courant, parent, et cachés). Tu utilise ensuite la fonction filemtime pour connaître la date de dernière modification des répertoires et fichiers. La fonction récursive calcule et renvoie la date maximum. |
Donc d'une part ça t'oblige à vérifier la date du fichier à chaque appel de page, et d'autre part, si la vérification se fait tous les jours à minuit par exemple, et que tu modifie ton site à 7h du mat, il faut attendre 17h pour la mise à jour.
Comme déjà dit, un simple fichier texte pour stocker ça qu'il met à jour à chaque modif du site, et c'est OK
Marsh Posté le 05-02-2008 à 09:21:30
Citation : |
.... ou tout simplement changer la page d'acceuil. Mais je crois que c'est ce qu'il veux éviter... Le délai peut être raccourci à une heure, c'est pour éviter que chaque visiteur déclenche le calcul.
Marsh Posté le 30-01-2008 à 23:22:59
bonsoir
j'ai trouvé ce bout de code que j'ai légèrement modifié:
ce script est présent que sur ma page d'accueil index.php, et le problème c'est que la date de MAJ affichée c'est seulement celle du fichier index.php... je voudrais qu'il puisse parcourir tous les fichiers du site et indiquer la date de celui qui a été mis à jour le plus récemment !
pouvez vous m'aider à faire ceci ?
je m'y connais pas beaucoup en php...