Wenn man schnell und einfach Verzeichnisse mit php rekursiv auslesen möchte, hat sich das Verwenden der folgenden Funktion als die mit Abstand performanteste Lösung herausgestellt.
Momentan benutze ich sie in meiner eigenen kleinen API openWebX um meine Bilderverzeichnisse in Gallerien zu verwandeln. Die Laufzeit für ~140 Verzeichnisse mit insgesamt ~4900 Bildern beträgt knappe 2,2Sekunden auf meinem Developerrechner, inkl. dem Speichern der Infos in die Datenbank.
Vielleicht findet der ein oder andere sie nützlich:
function fileProfileDir( $dir ) {
static $info = array();
if( is_dir( $dir = rtrim( $dir, "/\\" ) ) ) {
foreach( scandir( $dir) as $item ) {
if( $item != "." && $item != ".." ) {
$info['all'][] = $absPath = $dir . DIRECTORY_SEPARATOR . $item;
$stat = stat( $absPath );
switch( $stat['mode'] & 0170000 ) {
case 0100000:
$info['files'][] = $absPath;
break;
case 0040000:
$info['directories'][] = $absPath;
fileProfileDir( $absPath );
break;
case 0120000:
$info['links'][] = $absPath;
break;
case 0140000:
$info['sockets'][] = $absPath;
break;
case 0010000:
$info['pipes'][] = $absPath;
break;
}
}
}
}
clearstatcache();
return $info;
}
- Weblog von Jens Reinemuth
- Neuen Kommentar schreiben
- 883 Aufrufe




