Geschrieben von compactdisc am 18.07.2005, 11:47

Hallo,

da nirgends auf lima-city die Webspace-Grösse angezeigt wird, hab ich ein Script geschrieben, das diese Aufgabe übernimmt (ok, wird extern ausgeführt...)

"Hirarchie" des Scripts: Ordner werden vor den Dateien angezeigt!

Code


<?

error_reporting(E_ALL);

function dir_size($file) // Neue Funktion namens dir_size wird erstellt
{
// Die Variablen $anzordner, sowie $anzdateien können in der Funktion bearbeitet // werden
global $anzordner;
global $anzdateien;

$groesse = 0;

echo "<img src='http://filemanager.lima-city.de/images/icons/dir.gif'>&nbsp<b>". $file ."</b><br>";

$to_open = "../html/";
$to_open .= $file; // Pfad des zuöffnenden Ordners

// Erzeugt ein Handle auf das Verzeichnis ../html/
$ordner2 = opendir($to_open);

// Diese Schleife läuft solange, bis $file2 den Wert false besitzt
while(false !== ($file2 = readdir($ordner2)))
{
if($file2 != ".")
{
if($file2 != "..")
{
$file3 = $file;
$file3 .= "/";
$file3 .= $file2;
// Wenn das File vom Typ "dir" ist, dann soll es dessen
// Grösse auslesen
if(filetype($file3) == "dir")
{
print("-> ");
// Grösse des Ordners wird zu $groesse addiert
$groesse += subdir_size($file3);
// Anzahl Ordner ($anzordner) wird inkrementiert
$anzordner++;
print("<br>");
}
}
}
}

rewinddir($ordner2); // Setzt den Zeiger wieder an den Anfang

// Diese Schleife läuft solange, bis $file den Wert false besitzt
while(false !== ($file2 = readdir($ordner2)))
{
if($file2 != ".")
{
if($file2 != "..")
{
$file3 = $file;
$file3 .= "/";
$file3 .= $file2;
if(filetype($file3) == "file")
{
echo "->&nbsp<img src='http://filemanager.lima-city.de/images/icons/file.gif'> ". $file2 ."<br>";
// Die Dateigrösse wird zu $groesse addiert
$groesse += filesize($file3);
// Anzahl der Dateien wird um 1 erhöht
$anzdateien++;
}
}

}
}

// Eine Linie kennzeichnet, dass der Ordner bei dieser Stelle endet
print("-------------------<br><br>");

// gibt die Grösse des Ordners zurück (in Byte)
return $groesse;
}

// -----------------------------------------------

// Dies ist, bis auf wenige kleine Änderungen, welche die Ausgabe der
// Datei-/Ordnernamen betreffen, dieselbe Funktion wie dir_size($file);.
// Deshalb empfinde ich es als nicht notwendig, diesen Teil des Codes zu
// kommentieren.
function subdir_size($file)
{
global $anzordner;
global $anzdateien;

$groesse = 0;

echo "<img src='http://filemanager.lima-city.de/images/icons/dir.gif'>&nbsp<b>". $file ."</b><br>";

$to_open = "../html/";
$to_open .= $file;

$ordner2 = opendir($to_open);

while(false !== ($file2 = readdir($ordner2)))
{
if($file2 != ".")
{
if($file2 != "..")
{
$file3 = $file;
$file3 .= "/";
$file3 .= $file2;
if(filetype($file3) == "dir")
{
print("-> ");
$groesse += subdir_size($file3);
$anzordner++;
print("<br>");
}

}

}
}

rewinddir($ordner2);

while(false !== ($file2 = readdir($ordner2)))
{
if($file2 != ".")
{
if($file2 != "..")
{
$file3 = $file;
$file3 .= "/";
$file3 .= $file2;
if(filetype($file3) == "file")
{
echo "->->&nbsp<img src='http://filemanager.lima-city.de/images/icons/file.gif'> ". $file2 ."<br>";
$groesse += filesize($file3);
$anzdateien++;
}
}

}
}

print("<br>");

return $groesse;
}

// ---------------------------------------

$anzdateien = 0;
$anzordner = 0;
$groesse = 0;

// Erzeugt ein Handle auf das Verzeichnis ../html/
$ordner = opendir("../html");

$counter = 0;

// ---------------------------

// Die Schleife läuft solange, bis $file den Wert false besitzt
while(false !== ($file = readdir($ordner))) //
{
if($file != ".")
{
if($file != "..")
{
// Wenn die Datei vom Typ "dir" ist, soll die Ordnergrösse
// ermittelt werden und zu $groesse addiert werden
if(filetype($file) == "dir")
{
$groesse += dir_size($file);
// Die Anzahl der Ordner wird um 1 erhöht
$anzordner++;
}
}
}
}

// --------------------------
print("<br><br>");
// Setzt den Zeiger an den Anfang des Verzeichnisses
rewinddir($ordner);

// --------------------------

// Die Schleife läuft solange, bis $file den Wert false besitzt
while(false !== ($file = readdir($ordner)))
{
if($file != ".")
{
if($file != "..")
{
// Wenn die Datei vom Typ "file" ist, soll die Dateigrösse
// zu $groesse addiert werden
if(filetype($file) == "file")
{
echo $file ."<br>";
$groesse += filesize($file);
// Anzahl der Dateien wird um 1 erhöht
$anzdateien++;
}
}
}

}

// Rechnet bytes in megabytes um
$mbyte = $groesse / 1024 / 1024;

// Rundet das Ergebnis auf 2 Nachkommastellen
$gerundet = round($mbyte,2);

// Die Anzahl der Ordner und Dateien, sowie die Grösse des belegten
// Speicherplatzes in megabyte werden ausgegeben
print("<br>Grösse: <font face='Verdana' color='red'>". $gerundet ."</font> MByte");
print("<br>Anzahl Ordner (+ Unterordner): <font color='red'>". $anzordner ."</font>
<br>
Anzahl Dateien (gesamt): <font color='red'>". $anzdateien ."</font>");

?>

Das Skript kann live und in Farbe unter http://compactdisc.pyrokar.lima-city.de/ordner.php beobachtet werden ^^

Zur Ausgabe der Ordner/Unterordner/Dateien

Ordner
->Unterordner
->->Dateien des Unterordners

Diese Leerzeile trennt den Unterordner von den restlichen Dateien des Ordners
-> restliche Dateien des Ordners
----------------- Diese Linie kennzeichnet, dass der Ordner hier zu Ende ist

Das war's auch schon wieder

Quellen: PHP5 / mySQL 4 von Matthias Kannengiesser

Bewertung Anzahl
6
80,0 %
8 Bewertungen
5
10,0 %
1 Bewertungen
2
10,0 %
1 Bewertungen