peter mueller: Datum bestimmen

Hallo

Ich habe z.B. folgende Ordnerstruktur:

Home
 Dateien
  Text

Mit dem Befehl filemtime($dir."/Home/") erhalte ich nun das Datum der zuletzt geänderten Datei im Ordner Home.
Wie kann ich erreichen, dass ich das Datum der zuletzt geänderten Datei im gesamten Ordner Home (also inklusive die Unterordner Dateien und Text) erhalte?

Besten Dank
Peter

  1. Hallo

    Hallo

    Ich habe z.B. folgende Ordnerstruktur:

    Home
    Dateien
      Text

    Mit dem Befehl filemtime($dir."/Home/") erhalte ich nun das Datum der zuletzt geänderten Datei im Ordner Home.
    Wie kann ich erreichen, dass ich das Datum der zuletzt geänderten Datei im gesamten Ordner Home (also inklusive die Unterordner Dateien und Text) erhalte?

    Versuche es mal mit filemtime(); in dem Ortner Home zu starten. Wenn das nicht geht dann filemtime($dir."/Home/","Datei","text");
    Hoffentlich hilft es dir,

    mfg

    Besten Dank
    Peter

    1. Versuche es mal mit filemtime(); in dem Ortner Home zu starten.

      wie kann ich filemtime() im Ordner Home starten. Wo kann ich den Ordner setzen?

  2. Halo Peter,

    http://de2.php.net/filemtime und dort gleich das zweite Beispiel dürfte Deine Frage beantworten.

    Gruss, Thoralf

    --
    Sic Luceat Lux!
    1. Ich habe soeben dieses Beispiel getestet. Leider funktionierts nur für den ersten Unterordner. Alle weiteren Unterordner werden nicht berücksichtigt. Weiss vielleicht jemand, was geändert werden muss?

      Gruss
      Peter

      1. Hallo,

        Ich habe soeben dieses Beispiel getestet. Leider funktionierts nur für den ersten Unterordner. Alle weiteren Unterordner werden nicht berücksichtigt. Weiss vielleicht jemand, was geändert werden muss?

        Schaut auf den ersten Blick okay aus. Was geht nicht? Fehlermeldung?
        Ansonsten musst Du in jeden Durchlauf ein echo einbauen, was Dir die relevanten Daten mal ausgibt. Und dann schauen (oder posten) wo er hängt. Ggf. live mal aufbauen und hier verlinken.

        Gruss, Thoralf

        --
        Sic Luceat Lux!
        1. Ansonsten musst Du in jeden Durchlauf ein echo einbauen, was Dir die relevanten Daten mal ausgibt. Und dann schauen (oder posten) wo er hängt. Ggf. live mal aufbauen und hier verlinken.

          Ich habe den "Fehler" gefunden. Es werden nur die zuletzt geänderten Dateien und nicht auch die zuletzt geänderten Ordner angezeigt. Was muss ich ändern, damit dies auch bei den Ordner richtig angezeigt wird?

          Gruss
          Peter

          1. Hab's herausgefunden. Das Skript muss folgendermassen lauten:

            Gruss
            Peter

            function mostRecentModifiedFileTime($dirName,$doRecursive) {
               $d = dir($dirName);
               $lastModified = 0;
               while($entry = $d->read()) {
                   if ($entry != "." && $entry != "..") {
                       if (!is_dir($dirName."/".$entry)) {
                           $currentModified = filemtime($dirName."/".$entry);
                       } else if ($doRecursive && is_dir($dirName."/".$entry)) {
                                      $currentModified = filemtime($dirName."/".$entry);
                                      if ($currentModified > $lastModified){
                                       $lastModified = $currentModified;
                                      }
                           $currentModified = mostRecentModifiedFileTime($dirName."/".$entry,true);

            }
                       if ($currentModified > $lastModified){
                           $lastModified = $currentModified;
                       }
                   }
               }
               $d->close();
               return $lastModified;
            }

            1. Hallo,

              Nu wollt ich schon maulen, dass wir hier SELFhtml sind. ;) Und dann postest Du das fertig Script. Super. :)

              $currentModified = filemtime($dirName."/".$entry);

              Drei Hinweise: PHP ist mit Dateizugriffen naturgemäss etwas langsam, also hab das Script im Auge, ggf. mal bei einem grossen Verzeichns die Zeit nehmen.  Dann kannst Du einen leichten Performance-Gewinn rausholen, wenn Du statt "/" besser '/' nimmst. Strings in " werden geparst, wenn Du das nicht brauchst, sparst Du Dir mit ' die Parsingzeit. Macht im 'normalen' Betrieb nicht viel aus, aber bei einem rekursiven Script können das einige ms werden. Und zum Schluss noch der Verweis auf http://de2.php.net/manual/de/function.clearstatcache.php, das im Hinterkopf behalten, denn "Das Ergebnis dieses Funktionsaufrufes wird zwischengespeichert." Betrifft Dich hier nicht, aber ist eine beliebte 'Ich such mich doof'-Quelle. ;)

              Gruss, Thoralf

              --
              Sic Luceat Lux!
              1. Besten Dank für die Tipps!

                Gruss
                Peter