radarin
Angesehenes Mitglied
Hallo Liste
Mit dem folgenden Script zähle ich alle Verzeichnisse und Dateien auf meiner Domain, und an anderer Stelle lediglich die Dateien innerhalb der Fotogallery, was natürlich wesentlich weniger zu rechnen gibt. Auf dem Bisherigen Server lief das ganze zügig ab, auf dem newuen Server dauert es ewig bis zur Meldung Fatal error: Maximum execution time of 1 second exceeded. Beanstandet werden jeweils verschiedene Zeilen.
CODE
<?PHP
function count_file($dir)
{
// Ueberprueft ob das angegebene Verzeichnis existiert
if(is_dir($dir))
{
$afile[directory]=0;
$afile[file]=0;
$afile[size]=0;
chdir($dir);
$handle=opendir(".");
while($file=readdir($handle))
{
// Handelt es sich bei $file um ein Unterverzeichnis?
if(is_dir($file) && $file!="." && $file!="..")
{
// directory um eins erhoehen
$afile[directory]++;
// rekursiver Aufruf mit aktuellem Verzeichnis
$y=count_file($file);
// Ergebnisse des rekursiven Aufrufs der Funktion zu
// directory und file aufaddieren, size
$afile[directory]+=$y[directory];
$afile[file]+=$y[file];
$afile[size]+=$y[size];
}
// Handelt es sich bei $file um eine Datei?
if(is_file($file))
{
// file um eins erhoehen / dateigrösse addieren
$afile[file]++;
$afile[size] += filesize($file);
}
}
// Verzeichnisstruktur zurueck gehen
if(stristr($dir,"../")) chdir($_SERVER["DOCUMENT_ROOT"].substr($_SERVER["PATH_INFO"],0,strrpos($_SERVER["PATH_INFO"],"/")));
elseif($dir!=".") chdir("../");
closedir($handle);
}
return $afile;
}
function fs_convert ($datei, $nachkommastellen = 0) {
$size = $datei;
if($size >= 1073741824) {
return round($size/(1073741824), $nachkommastellen)." GB";
}
if($size >= 1048576) {
return round($size/(1048576), $nachkommastellen)." MB";
}
if($size >= 1024) {
return round($size/(1024), $nachkommastellen)." KB";
}
return $size." Byte";
}
// Aufruf der Funktion
$dir="/home/domain/public/";
$atest=count_file($dir);
?>
Offenbar ist der Server damit überfordert. Aber warum? Gibt es eine Elegantere Lösung? In meinem Galleryscript lese ich die Verzeichnisse oder die Bilder innerhalb einer Verzeichnisses aus. In der Liste will ich einfach nur anzeigen, wieviele weitere Verzeichnisse darin enthalten sind, oder wieviele Bilder...
Thanks, René
Mit dem folgenden Script zähle ich alle Verzeichnisse und Dateien auf meiner Domain, und an anderer Stelle lediglich die Dateien innerhalb der Fotogallery, was natürlich wesentlich weniger zu rechnen gibt. Auf dem Bisherigen Server lief das ganze zügig ab, auf dem newuen Server dauert es ewig bis zur Meldung Fatal error: Maximum execution time of 1 second exceeded. Beanstandet werden jeweils verschiedene Zeilen.
CODE
<?PHP
function count_file($dir)
{
// Ueberprueft ob das angegebene Verzeichnis existiert
if(is_dir($dir))
{
$afile[directory]=0;
$afile[file]=0;
$afile[size]=0;
chdir($dir);
$handle=opendir(".");
while($file=readdir($handle))
{
// Handelt es sich bei $file um ein Unterverzeichnis?
if(is_dir($file) && $file!="." && $file!="..")
{
// directory um eins erhoehen
$afile[directory]++;
// rekursiver Aufruf mit aktuellem Verzeichnis
$y=count_file($file);
// Ergebnisse des rekursiven Aufrufs der Funktion zu
// directory und file aufaddieren, size
$afile[directory]+=$y[directory];
$afile[file]+=$y[file];
$afile[size]+=$y[size];
}
// Handelt es sich bei $file um eine Datei?
if(is_file($file))
{
// file um eins erhoehen / dateigrösse addieren
$afile[file]++;
$afile[size] += filesize($file);
}
}
// Verzeichnisstruktur zurueck gehen
if(stristr($dir,"../")) chdir($_SERVER["DOCUMENT_ROOT"].substr($_SERVER["PATH_INFO"],0,strrpos($_SERVER["PATH_INFO"],"/")));
elseif($dir!=".") chdir("../");
closedir($handle);
}
return $afile;
}
function fs_convert ($datei, $nachkommastellen = 0) {
$size = $datei;
if($size >= 1073741824) {
return round($size/(1073741824), $nachkommastellen)." GB";
}
if($size >= 1048576) {
return round($size/(1048576), $nachkommastellen)." MB";
}
if($size >= 1024) {
return round($size/(1024), $nachkommastellen)." KB";
}
return $size." Byte";
}
// Aufruf der Funktion
$dir="/home/domain/public/";
$atest=count_file($dir);
?>
Offenbar ist der Server damit überfordert. Aber warum? Gibt es eine Elegantere Lösung? In meinem Galleryscript lese ich die Verzeichnisse oder die Bilder innerhalb einer Verzeichnisses aus. In der Liste will ich einfach nur anzeigen, wieviele weitere Verzeichnisse darin enthalten sind, oder wieviele Bilder...
Thanks, René