Hallo 
Ich arbeite grad an einem Backup Manager mit MySQL Anbindung.
Ich zähle in einem Verzeichnis die Anzahl der Datein, der Ordner, die Größe des Verzeichnisses und liste die einzelnen Datein auf.
In meiner "GUI" kann ich 1 oder mehrere Dateipfade eingeben die "gescannt" werden sollen.
Die Funktion klappt prima, allerdings wenn ich 2 Verzeichnisse in einer Schleife nacheinander Scanne addieren sich alle Werte jeweils um die Anzahl des n. Verzeichnisses.
Also wenn in dir_1 5 Dateien liegen und in dir_2 10 dann ist die Ausgabe, dass in dir_2 15 Dateien liegen, da die Variablen als static deklariert sind in meiner Funktion, da innerhalb der Funktion die Funktion wieder aufgerufen wird um tiefer in Ordnern zu scannen.
Da ich in PHP nicht so sehr mit OOP vertraut bin, gibt es einen Möglichkeit die Variablen in der Funktion wieder auf NULL zu setzten für den n. Aufruf ?
Anbei mal ein wenig Code (Die Funktion wurde teilweise so aus dem Netz übernommen und an meine Bedürfnisse angepasst):
Diese Funktion ruf ich in einer Schleife auf:
Wie gesagt, bei den Ausgaben würde nun für Verzeichnis 1 die korrekte Summe ausgegeben von Dateien,Ordnern und Größe, für Verzeichnis 2 und ff. würde dann zB. die Summe von Verzeichnis1 + die Summe von Verzeichnis 2 ausgegeben (Dateien).
Wenn ich die Variablen in der Funktion nicht statisch mache, dann zählt er die Dateien nur in erster Stufe um Ordner, also nicht die Dateien die Ebenen darunter liegen.
Kann mir jemand einen Tipp geben
?
Danke

Ich arbeite grad an einem Backup Manager mit MySQL Anbindung.
Ich zähle in einem Verzeichnis die Anzahl der Datein, der Ordner, die Größe des Verzeichnisses und liste die einzelnen Datein auf.
In meiner "GUI" kann ich 1 oder mehrere Dateipfade eingeben die "gescannt" werden sollen.
Die Funktion klappt prima, allerdings wenn ich 2 Verzeichnisse in einer Schleife nacheinander Scanne addieren sich alle Werte jeweils um die Anzahl des n. Verzeichnisses.
Also wenn in dir_1 5 Dateien liegen und in dir_2 10 dann ist die Ausgabe, dass in dir_2 15 Dateien liegen, da die Variablen als static deklariert sind in meiner Funktion, da innerhalb der Funktion die Funktion wieder aufgerufen wird um tiefer in Ordnern zu scannen.
Da ich in PHP nicht so sehr mit OOP vertraut bin, gibt es einen Möglichkeit die Variablen in der Funktion wieder auf NULL zu setzten für den n. Aufruf ?
Anbei mal ein wenig Code (Die Funktion wurde teilweise so aus dem Netz übernommen und an meine Bedürfnisse angepasst):
Code:
function dirCount($dirName) {
static $i;
static $z;
static $sum;
static $list;
$dir = dir($dirName);
while($obj = $dir->read()) {
if($obj!='.' && $obj!='..') {
if(is_dir($dirName.'/'.$obj)) {
dirCount($dirName.'/'.$obj);
$z++;
} else {
$list[] = "$dirName\\$obj";
$sum += sprintf("%u", filesize($dirName.'/'.$obj));
$i++;
}
}
}
return $arr=array($z,$i,$sum,$list);
}
Diese Funktion ruf ich in einer Schleife auf:
Code:
*$link: Einzelnen Pfade zu Verzeichnissen (zB: C:\ und D:\)
while ($i < count($link)) {
$arr = dirCount("$link[$i]");
echo $arr[0] . '<br>';
echo $arr[1] . '<br>';
echo $arr[2] . '<br>';
$i++;
}
Wie gesagt, bei den Ausgaben würde nun für Verzeichnis 1 die korrekte Summe ausgegeben von Dateien,Ordnern und Größe, für Verzeichnis 2 und ff. würde dann zB. die Summe von Verzeichnis1 + die Summe von Verzeichnis 2 ausgegeben (Dateien).
Wenn ich die Variablen in der Funktion nicht statisch mache, dann zählt er die Dateien nur in erster Stufe um Ordner, also nicht die Dateien die Ebenen darunter liegen.
Kann mir jemand einen Tipp geben

Danke
