[PHP] indiquer la date de la dernière MAJ du site...

indiquer la date de la dernière MAJ du site... [PHP] - PHP - Programmation

Marsh Posté le 30-01-2008 à 23:22:59    

bonsoir :hello:  
 
j'ai trouvé ce bout de code que j'ai légèrement modifié:

Code :
  1. <?php echo 'Dernière mise à jour faite le ' . date("d/m/Y",getlastmod()); ?>


 
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...

Reply

Marsh Posté le 30-01-2008 à 23:22:59   

Reply

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.

Message cité 1 fois
Message édité par nargy le 31-01-2008 à 01:50:33
Reply

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  ;)

Reply

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é)

Reply

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.

Reply

Marsh Posté le 31-01-2008 à 13:56:38    

'tain.[:pingouino]
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...[:joce]


---------------
Can't buy what I want because it's free -
Reply

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 :d

Reply

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.
 
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.


 
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

Reply

Marsh Posté le 05-02-2008 à 09:21:30    

Citation :


Comme déjà dit, un simple fichier texte pour stocker ça qu'il met à jour à chaque modif du site, et c'est OK


.... 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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed