Linux - wie wird bei opendir() sortiert?
Phil
- php
0 Christian Kruse0 Phil0 Christian Kruse0 Phil
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
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
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
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
Ah, Ok,
das wiederum ergibt Sinn.
Nagut, dann mach ich das halt *g*
Dankeschön!
Gruß
Phil