Datei auslesen mit fileatime()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei auslesen mit fileatime()

    Hallo,
    ich habe ein Script das die in einem Verzeichnis enthaltenen
    Dateien ausliest und auflistet.
    Ich möchte gerne nur die Dateien auflisten, die nicht älter
    als 60 Sekunden sind.
    Ich habe in folgendem Script vergeblich versucht fileatime()
    unterzubringen.
    Bei einem Test mit einer einzelnen Datei hatte es aber funktioniert.

    PHP-Code:
    $handle=opendir('userlist');
    while (
    $file readdir ($handle)) {

    if (
    $file != "." && $file != ".." && $file != "" ) {

    $file ereg_replace(".php","",$file);
    $test .= " ".$file." - ";
    }

    Dieser Test mit einer einzelnen Datei hat funktioniert:
    PHP-Code:
    $zeit fileatime("userlist/".$username);
    $zeit2 $zeit 30;

    if(
    $zeit2-$zeit 30) {
    echo
    "";
    }
    else{
    echo
    "$zeit";

    Eingebunden in erstgenanntes Script gibt gar keine Ausgabe:
    PHP-Code:
    $handle=opendir('userlist');
    while (
    $file readdir ($handle)) {

    if (
    $file != "." && $file != ".." && $file != "" ) {

    $zeit fileatime("userlist/".$username);
    $zeit2 $zeit 30;

    if(
    $zeit2-$zeit 30) {
    $file ereg_replace(".php","",$file);
    $test .= " ".$file." - ";
    }
    }
    }
    closedir($handle); 
    Dies hat auch nicht funktioniert:

    PHP-Code:
    $handle=opendir('userlist');
    while (
    $file readdir ($handle)) {

    if (
    $file != "." && $file != ".." && $file != "" && (time()-fileatime($file) < 60 ) {

    $file ereg_replace(".php","",$file);
    $test .= " ".$file." - ";
    }
    }

    closedir($handle); 

  • #2
    das script ist doch schon falsch:

    PHP-Code:
    $zeit fileatime("userlist/".$username); // zeit = 50
    $zeit2 $zeit 30// zeit2 = 80

    if($zeit2-$zeit 30) { // 80 - 50 = 5 !> 30
    echo""// was soll das?
    }
    else{
    echo
    "$zeit"// würde 50 ausgeben, da 30!>30 ist klappt das aber nicht

    oder sehe ich das falsch?

    Kommentar


    • #3
      Hallo,
      das war nur zum Testen ob das überhaupt funktioniert.

      Einbinden möchte ich das in das erste, oberste Script.
      Dort werden jetzt alle Dateien ausgegeben, ich hätte
      gerne aber nur die Ausgabe der Dateien die in den
      letzen 60 Minuten 'benutzt' wurden.
      Dies wird mit 'touch()' gemacht. Wird die Datei 60 sec. nicht
      mehr 'berührt', so ist sie für mich 'alt' und soll nicht mehr
      aufgelistet werden.

      Gruss
      Heiner

      Kommentar


      • #4
        aber wenn der testcode schon nicht korrekt ist, wie soll denn der andere korrekt sein?

        Du hast es doch da übernommen.

        also versuch erstmal deinen code zu verstehen (so wie ich es mit den kommentaren gemacht hab).

        Kommentar


        • #5
          Ich habe dieses Beispiel nur zum Testen benutzt ob überhaupt
          eine Anzeige kommt. Du hast natürlich recht, die Rechenbeispiele
          sind nicht richtig, haben aber 2 unterschiedliche Ergebnisse, wie
          gesagt, zum Testen gebracht. Hätte ich vielleicht nicht posten
          sollen, wollte aber damit zeigen das ich mir schon etwas Arbeit
          damit gemacht habe um nicht, wie leider öfter hier im Forum,
          angeranzt zu werden das man sich hier nur fertige Lösungen
          holt um sich die Arbeit zu sparen.

          Dieser Versuch müsste eigentlich funktionieren, klappt aber
          nicht. Wie gesagt, Dateien auslesen die nicht älter als 60 sec.
          sind.
          Hast Du vielleicht noch eine Idee dazu?

          Datei soll nicht . und nicht .. und nicht leer sein und nicht älter
          als 60 Sekunden.

          (time()-fileatime($file) < 60)

          12:00:00 Uhr - 11:55:00 Uhr = 300 Sekunden, Datei wird nicht gelistet
          12:00:00 Uhr - 11:59:30 Uhr = 30 Sekunden, Datei wird gelistet.

          Natürlich ist irgendwo ein Gedankenfehler oder ein Scriptfehler
          den ich nicht erkenne, deshalb bitte hier ja auch um Hilfe.

          PHP-Code:
          $handle=opendir('userlist');
          while (
          $file readdir ($handle)) {

          if (
          $file != "." && $file != ".." && $file != "" && (time()-fileatime($file) < 60 ) {

          $file ereg_replace(".php","",$file);
          $test .= " ".$file." - ";
          }
          }

          closedir($handle); 

          Kommentar


          • #6
            Natürlich ist irgendwo ein Gedankenfehler oder ein Scriptfehler
            den ich nicht erkenne, deshalb bitte hier ja auch um Hilfe.
            Die soll dir gewährt werden.

            hab den fehler leider auch noch nicht gespottet, kann (will-aus den von dir genannten Gründen) dir also nur beim debugging helfen.

            lass dir mal time() und die zeit der datei echoen unm von hand zu vergleichen.

            Kommentar


            • #7
              Hallo,
              das hatte ich schon gemacht. Es standen dann auf der Seite
              beide timestamps. Beim Testen mit einer einzelnen Datei
              kamen also die Ausgaben, beim Testen durch Subtraktion
              kamen auch entsprechende, nachvollziehbare Ergebnisse.

              Das Problem scheint hier zu sein, dass Daten aus mehreren Dateien
              ausgelesenen werden zum Verarbeiten?

              Gruss
              Heiner

              Kommentar


              • #8
                PHP-Code:
                $pfad=realpath('userlist');
                $handle=opendir($pfad);
                while (
                $file readdir ($handle))
                  if (
                is_file($pfad.$file))
                    echo 
                'Name: '.$file.'  time: '.(time()).'    
                fileatime: '
                .fileatime($pfad.$file).'    
                Differenz: '
                .(time()-fileatime($pfad.$file).'<br />';
                closedir($handle); 
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  @heiner: da du in der schleife arbeitest, sollte aber genau das kein problem sein.

                  Kommentar


                  • #10
                    Hallo,
                    Vorschlag von mrhappiness auf die Schnelle etwas geändert, zeigte 1:1 nichts an:

                    PHP-Code:
                    $handle=opendir('userlist');
                    while (
                    $file readdir ($handle)) {
                    if (
                    $file != "." && $file != ".." && $file != "" ) {

                    $zeit1 fileatime('userlist'.'/'.$file);
                    $zeit2 time()-$zeit1;

                    echo
                    "<br>Name: " .$file"<br>";
                    echo
                    "Zeit1: " .$zeit1"<br>";
                    echo 
                    "Zeit2: " .$zeit2"<br>";
                    }
                    }
                    closedir($handle); 
                    Ergab in der Ausgabe:

                    Name: Rob
                    Zeit1: 1062453727
                    Zeit2: 8

                    Name: Isarbiker
                    Zeit1: 1062453728
                    Zeit2: 7

                    Name: Boxi
                    Zeit1: 1062453729
                    Zeit2: 6

                    Name: Derdad
                    Zeit1: 1062453728
                    Zeit2: 7

                    Name: Railie
                    Zeit1: 1062453735
                    Zeit2: 0

                    Irgendetwas stimmt nicht mit:

                    $zeit2 = time()-$zeit1;

                    {EDIT}
                    Stimmt doch, ist ja die Differenz.
                    Ich versuche es dann noch mal weiter.

                    Gruss
                    Heiner
                    Zuletzt geändert von Heiner; 02.09.2003, 00:21.

                    Kommentar


                    • #11
                      bau diese abfrage mal zusätzlich ein:

                      if(time() - fileatime('userlist'.'/'.$file) < 60)
                      echo 'diese Datei ist okay';

                      PHP-Code:
                      $handle=opendir('userlist');
                      while (
                      $file readdir ($handle)) {
                      if (
                      $file != "." && $file != ".." && $file != "" ) {

                      $zeit1 fileatime('userlist'.'/'.$file);
                      $zeit2 time()-$zeit1;

                      if(
                      time() - fileatime('userlist'.'/'.$file) < 60)
                      echo 
                      'diese Datei ist okay';

                      echo
                      "<br>Name: " .$file"<br>";
                      echo
                      "Zeit1: " .$zeit1"<br>";
                      echo 
                      "Zeit2: " .$zeit2"<br>";
                      }
                      }
                      closedir($handle); 

                      Kommentar


                      • #12
                        Hallo,

                        danke für eure Hilfe, das ist jetzt die Lösung:

                        PHP-Code:
                        $handle=opendir('userlist');
                        while (
                        $file readdir ($handle)) {

                        $zeit1 fileatime('userlist'.'/'.$file);
                        $zeit2 time()-$zeit1;

                        if (
                        $file != "." && $file != ".." && $file != "" && $zeit2 30) {

                        $file ereg_replace(".php","",$file);
                        $test .= " ".$file." - ";
                        }
                        }
                        closedir($handle); 
                        Gruss
                        Heiner

                        Kommentar

                        Lädt...
                        X