Dernière date de modification d'un site [meridius]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 804 fois - Téléchargée 27 fois

Contenu du snippet

Hello,

Ce code correspond plus d'une réponse à une question de Meridius dans le forum qu'à une véritable source. Il s'agit de parcourir l'arborescence à partir d'un répertoire passé en paramètre et de vérifier les dernières dates de modification des fichiers.

Ce n'est pas vraiment un super code, mais il peut aider quelqu'un. Au passage, un parcours d'arbre récursif à déjà été déposé sur CodeS-SourceS par TRASH52.

Il faut juste faire attention étant donné que tous les cas ne sont pas gérés. Le code ne prend notamment pas les fichiers ayant un espace dans le nom, ni les liens (links) sous Un*x.

Source / Exemple :


<?php

//-- Fonction retournant la date de modification du dernier fichier
//-- modifier au sein du répertoire passé en paramètre.
function treeGetLastChangedDate($strRoot)
{
  //-- Initialisation d'une variable locale pour stocker la dernière date
  //-- de modification.
  $dLastDate = 0;
  $dDate = 0;

  //-- Vérifier que le paramètre est un répertoire.
  if (is_dir($strRoot)) {
    //-- Lecture du contenu du répertoire passé en paramètre.
    $aDirectory = opendir($strRoot);
    //-- Parcours du contenu du répertoire.
    while ($strFile = readdir($aDirectory)) {
      if (($strFile != '.') && ($strFile != '..')) {
        //-- On récupère le chemin complet du fichier.
        $strFullFile = $strRoot.'/'.$strFile;
        //-- On traite le fichier...
        if (is_dir($strFullFile)) {
          //-- Si l'entrée est un répertoire, relancer la fonction sur
          //-- cette entrée.
          $dDate = treeGetLastChangedDate($strFullFile);
        } elseif (is_file($strFullFile)) {
          //-- Si l'entrée est un fichier, on récupère sa date de modification.
          $dDate = filemtime($strFullFile);
        }
        //-- Maintenant, on compare la date récupérée avec celle stockée dans
        //-- la variable $dLastDate.
        if ($dDate > $dLastDate) $dLastDate = $dDate;
      }
    }
    //-- Fermeture du répertoire.
    closedir($aDirectory);
    //-- On retourne la date trouvée...
    return $dLastDate;
  }
  return null;
}

?>

<html>
<head><title>PHP-RecursiveTree</title></head>
<body>
<?php
  $dResult = treeGetLastChangedDate('C:/');
  echo 'Last modified: '.strftime("%A %d %B %Y", $dResult);
?>
</body>
</html>

Conclusion :


Faites attention au timeout sur le temps d'exécution :) Et n'hésitez pas à critiquer.

A+

Ken.

A voir également

Ajouter un commentaire

Commentaires

nico606
Messages postés
270
Date d'inscription
mercredi 5 novembre 2003
Statut
Membre
Dernière intervention
11 septembre 2004
-
<? print("Dernière modification le ");print(date("d/m/Y à H:i", filemtime($SCRIPT_FILENAME)));?> lol pour le retour chariot mai c deja plus cour mais il prend en compte que la page concerné
yannva
Messages postés
1
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
30 juin 2004
-
une modification pour accèlerer le script en ne parsant pas les sous-repertoire et qui fonctionne très bien avec EasyPHP 1.7 :

<?php

//-- Fonction retournant la date de modification du dernier fichier ou répertoire
//-- modifier au sein du répertoire passé en paramètre.
function treeGetLastChangedDate($strRoot)
{
//-- Initialisation d'une variable locale pour stocker la dernière date
//-- de modification.
$dLastDate = 0;
$dDate = 0;

//-- Vérifier que le paramètre est un répertoire.
if (is_dir($strRoot)) {
//-- Lecture du contenu du répertoire passé en paramètre.
$aDirectory = opendir($strRoot);
//-- Parcours du contenu du répertoire.
while ($strFile = readdir($aDirectory)) {
if (($strFile != '.') && ($strFile != '..')) {
//-- On récupère le chemin complet du fichier.
$strFullFile = $strRoot.'/'.$strFile;
$dDate = filemtime($strFullFile);
if ($dDate > $dLastDate) $dLastDate = $dDate;
}
}
//-- Fermeture du répertoire.
closedir($aDirectory);
//-- On retourne la date trouvée...
return $dLastDate;
}
return NULL;
}
$repertoire=$_SERVER["DOCUMENT_ROOT"]."/";
$dResult = treeGetLastChangedDate($repertoire);
// echo 'Dernière modification : '.strftime("%A %d %B %Y %H %M", $dResult);
echo "
<small>Dernière modification : ";
echo date("d/m/Y H:i",$dResult)."</small>
";
?>
borower
Messages postés
7
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
23 mai 2004
-
Bonjours a tous j'aimerais savoir comment se fait il qu'une fois le code inserer dans une page, meme une page des plus bazique, celle ci s'affiche au bout d'un certain temps trop long a mon gout ?
J'aimerais savoir comment y remedier si possible.
Je trouve tous de meme que cette source est tres utile et je remerci son proprietaire.
A+
Kenaghdar
Messages postés
71
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
27 juin 2003
2 -
cs_iubito
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006
-

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.