Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2758 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1679343
xphanoo
Posté le 30-01-2008 à 23:22:59  profilanswer
 

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

mood
Publicité
Posté le 30-01-2008 à 23:22:59  profilanswer
 

n°1679362
nargy
Posté le 31-01-2008 à 01:49:32  profilanswer
 

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
n°1679405
xphanoo
Posté le 31-01-2008 à 09:00:26  profilanswer
 

oulà je sens que ça va pas être simple !
merci de ton aide je vais quand même essayer  ;)

n°1679409
xphanoo
Posté le 31-01-2008 à 09:23:17  profilanswer
 

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

n°1679652
nargy
Posté le 31-01-2008 à 13:42:10  profilanswer
 

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.

n°1679675
skeye
Posté le 31-01-2008 à 13:56:38  profilanswer
 

'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 -
n°1680808
bixibu
Ca ... c'est fait!
Posté le 02-02-2008 à 00:46:55  profilanswer
 

surtout que si a chaque page demandée par un visiteur tu parcours recusrsivement tout ton site... niveau perf ca pourrait etre sympa :d

n°1680844
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-02-2008 à 11:40:31  profilanswer
 

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

n°1681770
nargy
Posté le 05-02-2008 à 09:21:30  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[PHP] Gallerie : redimensionnement d'img > x*1100pxPHP aleatoire Problème de débutant.
Site HTML vers site dinamique[php / mysql] Numéros de page et tri sur champ date
Securiser pages photos d'un site[PHP] oracle et paramètre de type date ( ou alors sysdate ;) )
Sécurité physique d'application PHPProblème de lenteur d'un site sous IE7 et pas sur IE6, FF2, Safari ...
[Résolu] [PHP][XML][PDF] Comment appeler FOP depuis une page PHP ? 
Plus de sujets relatifs à : [PHP] indiquer la date de la dernière MAJ du site...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR