[Funktion] Verzeichnis während readdir()-Schleife ändern?

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

  • [Funktion] Verzeichnis während readdir()-Schleife ändern?

    Hallo,

    für den lesenden Zugriff cached PHP ja wohl Zugriffe ins Filesystem...
    Was aber passiert, wenn ich während einer Verzeichnisschleife den Inhalt selbst verändere, also während der Verarbeitung aller Einträge in einem Directory einige Dateien lösche, verschiebe, umbenenne ?
    Hat dies Einfluss auf das was die nächste Iteration zurückgibt, oder bedient sich diese aus dem Cache, den es wohl bei opendir angelegt hat ?!
    Ich kenne das Problem aus anderen Sprachen, dort muss man damit rechnen das sich der Inhalt dynamisch ändern kann.

  • #2
    http://de.php.net/manual/de/function.clearstatcache.php
    Wir werden alle sterben

    Kommentar


    • #3
      Ja, äh, das kannte ich schon. Aber wie bereits gesagt geht daraus für mich nicht eindeutig das Verhalten von opendir/readdir hervor.
      Ich frage deshalb, weil man ja sonst bei jeder Dateioperation (filemtime, unlink,rename) damit rechnen muss das die Datei garnicht mehr da ist...

      Kommentar


      • #4
        ... weil man ja sonst bei jeder Dateioperation (filemtime, unlink,rename) damit rechnen muss das die Datei garnicht mehr da ist...
        Das hängt nicht nur von PHP ab. Während du gerade über readdir() iterierst, könnte root mal eben das Verzeichnis leeren. Dagegen bist du machtlos.

        Wenn du wissen möchtest, inwiefern deine Dateioperationen die Rückgabe von readdir() beeinflussen, dann hast du zwei Möglichkeiten:

        1. Ausprobieren
        Iteriere jeweils mit und ohne clearstatcache() über ein readdir()-Ergebnis und erzeuge/verschiebe/lösche/sperre Dateien währenddessen.

        2. Ausschließen
        Speichere erstmal alle Dateinamen, die readdir() liefert und iteriere dann über dieser Liste.

        Kommentar

        Lädt...
        X