Phil: Linux - wie wird bei opendir() sortiert?

Nabend zusammen,

ich hab auchmal ne Frage:

Wie sortiert Linux beim einelesen eines Ordners mittels opnedir() die Dateien?

Problem ist folgendes:

Ich habe ne PHP Seite, die aus einem Ordner alles Dateien einliest, diese parsed, etc.

Die Date lief bisher in meiner Entwicklungsumgebung (Windows), in meiner Testumgebung (RedHat 7.3), und meiner alten Produktivumgebung (Sun Solaris). Alles einwandfrei, Sortierung nach Name.

Jetzt läuft Sie auf Suse 8.1 und tadaaa, die Sortierung ist anders! Ich kann nicht erkennen nach welchem Muster, weder nach Datum, User, Group, Name, Größe, nichts dergleichen.

Die PHP Version hat sich in diesem Fall von 4.3.4 auf 4.3.5 geändert. Ist da die Sortierung betroffen gewesen? Im Changelog auf php.net habe ich nichts gefunden.

Vielen Dank im voraus!

Gruß

Phil

--
ich bin ein nachmacher: http://www.eppstein.de
  1. Hallo Phil,

    Wie sortiert Linux beim einelesen eines Ordners mittels opnedir() die Dateien?

    Mittels eines geeigneten Sortierungs-Algorithmus, beispielsweise Insertion Sort.

    Die PHP Version hat sich in diesem Fall von 4.3.4 auf 4.3.5 geändert. Ist da die Sortierung
    betroffen gewesen? Im Changelog auf php.net habe ich nichts gefunden.

    Die Reihenfolge der Dateien, die man per readdir() einliest, ist nicht definiert und mehr oder
    weniger zufällig (nein, nicht wirklich, aber es steckt keine Systematik dahinter). Siehe auch
    Manual.

    Grüße,
     CK

    --
    Unsere Vorstellungen von der Ewigkeit sind genauso nuetlich wie die Mutmassungen eines Kuehkens ueber die Aussenwelt bevor es die Eierschale aufbricht.
    http://wwwtech.de/
    1. Hi Christian,

      danke erstmal!

      Die Reihenfolge der Dateien, die man per readdir() einliest, ist nicht definiert und mehr oder
      weniger zufällig (nein, nicht wirklich, aber es steckt keine Systematik dahinter).

      Aber wieso verhalten sich 3 Systeme absolut identisch, bei jedem Aufruf (Das PHP Script ist nicht neu), und Sortieren nach Name, und ein viertes tut das nicht? Das ergibt in meinen Augen keinen Sinn ;-)

      Gruß

      Phil

      --
      ich bin ein nachmacher: http://www.eppstein.de
      1. Hallo Phil,

        Die Reihenfolge der Dateien, die man per readdir() einliest, ist nicht definiert und mehr
        oder weniger zufällig (nein, nicht wirklich, aber es steckt keine Systematik dahinter).

        Aber wieso verhalten sich 3 Systeme absolut identisch, bei jedem Aufruf (Das PHP Script ist
        nicht neu), und Sortieren nach Name, und ein viertes tut das nicht?

        Das tun sie nicht. Sie haben (abhängig vom Dateisystem) wahrscheinlich die Reihenfolge
        genommen, in der die Dateien auf der HD liegen. Oder, im Falle von RaiserFS, JFS oder XFS
        eine relativ beliebige Reihenfolge.

        Grüße,
         CK

        --
        Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!
        http://wwwtech.de/
        1. Ah, Ok,

          das wiederum ergibt Sinn.
          Nagut, dann mach ich das halt *g*

          Dankeschön!

          Gruß

          Phil

          --
          ich bin ein nachmacher: http://www.eppstein.de