flokli
Erfahrenes Mitglied
Hallo,
kann man die Größe eines bestimmten Ordners messen, ohne durch das Verzeichnis zu "steppen" wie hier?
Gibt es vielleicht nen exec()-Befehl, der das schneller erledigt?
(Er soll Linux und Windows-gebräuchlich sein)
kann man die Größe eines bestimmten Ordners messen, ohne durch das Verzeichnis zu "steppen" wie hier?
PHP:
// ************************************
// *** dir_functions.lib.php ***
// ************************************
// -----------------------------------------------------------------------
/*
Copyright:
==============
Dieses Script wurde ursprünglich von Dennis Riehle geschrieben - Sie dürfen
das Script frei verwenden, bearbeiten und weitergeben, solange dieser Copyright
Hinweis nicht entfernt wird.
Es erfolgt keinerlei Haftung für eventuell durch dieses Script entstandene
Schäden - die Benutzung erfolgt auf eigene Gefahr.
Beschreibung:
==============
Dieses Script enthält ein paar einzelne PHP Funktionen, welche sich bei der
Arbeit auf dem lokalen File System hilfreich zeigen können.
Inhalt:
==============
- Funktion: dir_up ( string Path )
- Funktion: dir2array ( string Path [ , bool .ht-Files [ , bool Dot-Files ] ] )
- Funktion: rm_dir_files ( string Path )
- Funktion: filesize_dir ( string Path )
Veränderungen:
==============
Die Funktion dir2array() hat bis jetzt auch Datei mit Namen wie xy.htxy ausgefiltert,
allerdings sollten nur .htxy herrausgefiltert werden, denn in der Apache verbietet
auch nur auf letztere den Zugriff über HTTP.
*/
// -----------------------------------------------------------------------
function filesize_dir( $dirpath )
{
// Buffer für Dateigröße initialisieren und auf 0 setzen
$filesize = 0;
// Wenn das letzte Zeichen in $dirpath ein Slash ist, diesen entfernen
if ( substr( $dirpath, -1, 1 ) == "/" ) {
$dirpath = substr( $dirpath, 0, -1 );
}
// Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
if ( !$handle = opendir( $dirpath ) ) {
return false;
} while ( ( $file = readdir( $handle ) ) !== false ) {
// Die Einträge . und .. auslassen
if ( $file == "." OR $file == ".." ) {
continue;
}
// Ist der aktuelle Eintrag eine Datei, Größe zum Buffer hinzuzählen
if ( is_file( $dirpath . "/" . $file ) ) {
$filesize += filesize( $dirpath . "/" . $file );
}
// Sonst, wenn es ein Verzeichnis ist, Funktion erneut aurufen
// und Rückgabewert addieren
else {
$filesize += filesize_dir( $dirpath . "/" . $file );
}
}
// Endergebnis zurückliefern
return $filesize;
}
// -----------------------------------------------------------------------
Gibt es vielleicht nen exec()-Befehl, der das schneller erledigt?
(Er soll Linux und Windows-gebräuchlich sein)