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

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

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.