php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.05.2008, 21:16  
Neuer Benutzer
 
Registriert seit: 13.05.2008
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Dooki befindet sich auf einem aufstrebenden Ast
Standard Ordner auslesen und während des auslesen sortieren

Hallöchen, ich weiss nicht ob ich in diesem Forum richtig bin.. is ja verwirrend..

Ich lese einen Ordner mit OPENDIR/READDIR aus..
kann demnach alles wunderbar ausgeben..

aktuell sortiere ich die inhalte nachdem ich den ganzen ordnerinhalt in ein array geschrieben habe, mit der funktion array_multi_sort().. geht wunderbar, so wie ich es mir gewünscht habe..

ABER:
So muss ich erst den ganzen Ordner auslesen, was u.U. bei grossen Ordnern zu Probleme mit der Ladezeit führen kann.

Gibt es eine Möglichkeit schon während (oder wenigstens zeitnah ^^) des einlesens des ordners zu sortieren?
Halt ohne alles in ein Array zu schreiben..



Ich will Bilder aus einem Ordner auslesen, aber bei der ausgabe seitenzahlen hinzufügen, was bei einem Ordner mit über 200 bildern (sagen wir mal so) sehr lange dauert..


Kann mir hier jemand auf die sprünge mit einer funktion oder gar nen kleinen codeteil helfen?
Dooki ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.05.2008, 21:29  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Also die einzige Möglichkeit, die ich sehe, ist halt immer, wenn du ein neues File einliest, dieses gleich an der korrekten Stelle im Array einzufügen (mussu einen Algorithmus verwenden) bzw am Ende einzufügen und dann mit ner PHP-Funktion zu sortieren. Dummerweise dauert das ständige Ausführen des Algorithmus bzw der Sortierfunktion definitiv länger, wie wenn du alles einliest und dann am Schluss sortierst.

Alternativ könntest du eine Implementierung als Baum verwenden, aber auch da musst du jeweils alle Files einlesen.

Ich verstehe dein Problem aber nicht ganz. Das Filelisting eines Ordners ist doch (wenn auch begrenzt) bereits alphabetisch geordnet. Oder willst du nach anderen Kriterien sortieren?
Montellese ist offline  
Alt 13.05.2008, 21:39  
Neuer Benutzer
 
Registriert seit: 13.05.2008
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Dooki befindet sich auf einem aufstrebenden Ast
Standard

ja das isses ja.. nach name sortieren solls ja nicht..
ehr nach datum, wann wurde hochgeladen..
also die neuesten dateien sollen oben stehen.

die möglichkeit, das erstelldatum als key zu nutzen kam mir auch in den sinn, nur wäre dort das problem, dass es ggf. 2 files gibt die exact zur selben zeit hochgeladen wurden.. ok is ehr selten, KANN aber vorkommen

demnach habe ich die option im script drin, nach DATUM, NAME, GRÖSSE, BREITE und HÖHE zu sortieren..
will noch eine option einbauen, wo man per dropdown auswählen wonach zu sortieren ist, aber das ist 2. rangig.. primär sollte die sortierung ansich im vordergrund stehen, damit diese reibungslos läuft..

und genau weil es primär nach datum sortieren soll, hab ich so meine probleme damit



aber ok, wenn du meinst es ist wohl letztenendes besser im nachhinein zu sortieren, bleibt mir vorab keine andere möglichkeit..



im netz hab ich keine funktion gefunden die mir das erleichtert ^^
hatte erst gehofft scandir hilft mir.. sortiert aber auch nur nach name..
Dooki ist offline  
Alt 13.05.2008, 22:37  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Kenne leider auch keine PHP-Funktion, bei der man angeben kann, wonach ein Directory Listing sortiert werden soll.

Da ich keine Ahnung habe, welchen Algorithmus array_multisort() verwendet, ist meine Aussage, dass eine einmalige Sortierung schneller ist, nur geraten. Aber Algorithmen wie Mergesort (der im allgemeinen Fall wohl als optimal betrachtet werden kann mit einer Komplexität von n * log(n) Schritten) werden nicht schneller, wenn man sie bereits auf Teile des zu sortierenden Arrays anwendet. Aber wenn du einen eigenen Algorithmus schreibst, der berücksichtigt, dass nur das neueste Element an der richtigen Position eingefügt werden muss und mit Anfangs- und Enddaten Abschätzungen machst, könnte es durchaus schneller sein.
Zur Resourcen-Ausnutzung wage ich keine Aussage zu machen, da das wirklich nurnoch komplett geraten wäre.
Montellese ist offline  
Alt 14.05.2008, 07:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Schonmal versucht 10 von 30 Leute ihrem Alter - entsprechend der Gesamtheit - aufzustellen, ohne die restlichen 20 nach ihrem Alter zu fragen? Du MUSST alle Eintraege einlesen. Aber du musst das ganze nicht jedes mal neu machen, dafuer gibts Caches, die du dir ganz billig selber bauen kannst. Entweder ueber die Session, oder eine Datei. Erstell einfach einen cache-Ordner in deinem Projekt und schreib das Ergebnis deiner Sortierung aller Eintraege einfach serialize()d (siehe Handbuch) direkt mit file_put_contents() in den cache-Ordner. Natuerlich musst du die Datei irgendwann wieder verwerfen, sonst werden Aktualisierungen im realen Dateisystem ja nie beruecksichtigt. Wenn der Bilderordner den du auslesen willst, aber ueber dein Administrationstool administriert wird, kannst du dort ja an geeigneter Stelle das Loeschen der Cache-Datei veranlassen.

PS: 200 Bilder in einem Ordner gehen eigentlich noch, statt readdir wuerde ich dir glob() empfehlen, wenn du Glueck hast gibts dafuer sogar einen Mode-Flag, der die Sortierung fuer dich uebernimmt. Ab mehreren hundert Bildern wuerde ich dir empfehlen, eine ab/cd/ Struktur im Hex-Format anzulegen und die Bilddateien als MD5-Hashsumme abzuspeichern. So vermeidest du auch das doppelte Hochladen der selben Datei.
Chriz ist offline  
Alt 14.05.2008, 15:39  
Neuer Benutzer
 
Registriert seit: 13.05.2008
Beiträge: 13
PHP-Kenntnisse:
Anfänger
Dooki befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Schonmal versucht 10 von 30 Leute ihrem Alter - entsprechend der Gesamtheit - aufzustellen, ohne die restlichen 20 nach ihrem Alter zu fragen?
Gut gekontert

Den Rest lass ich mir mal durch den Kopf gehen..

vielen dank dir
Dooki ist offline  
Alt 14.05.2008, 17:50  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Oder du legst ein Abbild des Ordners in einer Datenbank an. Dann wird dir das Auslesen und Sortieren deutlich erleichtert.
Du musst dann nur den Ordner bei Änderungen mit der Datenbank abgleichen.
Manko10 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem beim Ordner auslesen sha1ch PHP Tipps 2008 4 09.02.2008 19:49
TreeMenu Fatal Error PHP Tipps 2006 8 07.04.2006 11:22
Unter ordner und Files automatisch auslesen lichtscheu PHP Tipps 2006 6 09.03.2006 19:19
ordner auslesen antiheld2003 PHP Tipps 2007 6 18.12.2005 19:27
Ordner in Ordner Auslesen PHP Tipps 2005-2 1 30.07.2005 17:09
Ordner auslesen PHP Tipps 2005-2 12 03.07.2005 16:43
Ordner auslesen, Ausgabe nach dem Datum sortieren PHP Tipps 2005-2 10 02.07.2005 17:18
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
Ordner auslesen - Zusätzliche Bildplatzhalter PHP Tipps 2005 8 21.05.2005 12:25
ordner auslesen lassen notyyy PHP Tipps 2005 12 13.05.2005 14:25
Fehler bei Auslesen von Ordnernamen und datein im ordner PHP-Fortgeschrittene 3 11.12.2004 13:25
ordner in einem verzeichnis auslesen und anzeigen lindner PHP Tipps 2004 5 19.08.2004 00:03
Ordner Auslesen PHP Tipps 2004 3 03.07.2004 09:17
ordner mit dateien mit externen links auslesen PHP Tipps 2004 2 19.06.2004 14:33
Auslesen eines Ordner bringt Probleme PHP Tipps 2004 2 09.06.2004 13:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ordner auslesen und sortieren, php verzeichnis auslesen sortieren, php ordner auslesen sortieren, php ordner sortieren, php verzeichnis sortiert auslesen, http://www.php.de/php-tipps-2008/1200-ordner-auslesen-und-waehrend-des-auslesen-sortieren.html, php dateien in ordner sortieren, ordner auslesen, php dir auslesen und sortieren, php ordner auslesen sortiert, verzeichnis sortiert auslesen, .html verzeichnis auslesen und sortiert mit php, ordner auslesen sortieren, php verzeichnis auslesen datum, php ordner auslesen alphabetisch, php verzeichnis auslesen und sortieren, php ordner sortiert auslesen, php dateien aus verzeichnis auslesen und sortieren, php ordner datum, ordner auslesen und sortieren

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum