Avatar billede phpbegynder2004 Nybegynder
30. december 2004 - 00:38 Der er 10 kommentarer og
1 løsning

Website stoerrelse

Kaere eksperter,
Er det muligt for mig at faa en detaljeret udskriftsvisning over alle filer og mapper paa min hjemmeside og hvad de hver isaer fylder?
Jeg er i Australien og sidder ved et langsomt modem saa har ikke mulighed for at downloade hele hjemmesiden.
Er der muligvis et php-script eller et ftp program der kan goere det?

Paa forhaand mange tak!
Avatar billede coderdk Praktikant
30. december 2004 - 00:47 #1
<?php

    $size = 0;

    function getSize( $path )
    {
        global $size;
        if ( $d = opendir( $path ) )
        {
            while ( $f = readdir( $d ) )
            {
                if ( is_file( $f ) )
                {
                    $s = filesize( $path . '/' . $f );
                    $size += $s;
                    echo "$path/$f " . $s . " b<br>";
                }
                elseif ( is_dir( $f ) && $f != '.' && $f != '..' )
                {
                    getSize( "$path/$f" );
                }
            }
        }
    }

    getSize( "." );

    echo "<br><br><b>Total size: $size bytes</b>";

?>
Avatar billede coderdk Praktikant
30. december 2004 - 00:49 #2
Revideret udgave der også rydder lidt op efter sig:

<?php

    $size = 0;

    function getSize( $path )
    {
        global $size;
        if ( $d = opendir( $path ) )
        {
            while ( $f = readdir( $d ) )
            {
                if ( is_file( $f ) )
                {
                    $s = filesize( $path . '/' . $f );
                    $size += $s;
                    echo "$path/$f " . $s . " b<br>";
                }
                elseif ( is_dir( $f ) && $f != '.' && $f != '..' )
                {
                    getSize( "$path/$f" );
                }
            }
            closedir( $d );
        }
    }

    getSize( "." );

    echo "<br><br><b>Total size: $size bytes</b>";

?>
Avatar billede phpbegynder2004 Nybegynder
30. december 2004 - 02:15 #3
coderdk-> Tak for din hjaelp, men tror der er en lille timeout fejl i scriptet eller saadan noget. Den viser nemlig ikke alle mapper og de mapper den viser viser den kun med faa filer.
Kan det rettes?
Mange tak igen!
Avatar billede coderdk Praktikant
30. december 2004 - 02:29 #4
Jeps:

<?php

    set_time_limit( 0 );

    $size = 0;

    function getSize( $path )
    {
        global $size;
        if ( $d = opendir( $path ) )
        {
            while ( $f = readdir( $d ) )
            {
                if ( is_file( $f ) )
                {
                    $s = filesize( $path . '/' . $f );
                    $size += $s;
                    echo "$path/$f " . $s . " b<br>";
                }
                elseif ( is_dir( $f ) && $f != '.' && $f != '..' )
                {
                    getSize( "$path/$f" );
                }
            }
            closedir( $d );
        }
    }

    getSize( "." );

    echo "<br><br><b>Total size: $size bytes</b>";

?>
Avatar billede phpbegynder2004 Nybegynder
30. december 2004 - 07:58 #5
Den goer det samme igen, men nu brokker den sig over at den er i safemode (er hos b-one).

Warning: Cannot set time limit in safe mode in /customers/sjovert.dk/sjovert.dk/httpd.www/test.php on line 3

Jeg har fundet et script der udskriver alt fra en "specified" mappe. Den gaar dog ikke dybere ned i disse mapper. Maaske noget der kunne hjaelpe?

<?
$dirname = "mappe/";
$dir = opendir($dirname);
while(false !== ($fil = readdir($dir))) {


  if ($fil != "." && $fil != "..") {

    if (is_dir($dirname.$fil)) {
        $mapper[] = $fil;
    }

    if (is_file($dirname.$fil)) {
        $filer[] = $fil;
    }
  }
}
closedir($dir);

sort($filer);
sort($mapper);

foreach($filer as $cur_file) {
    echo $cur_file . "<br>";
}
echo "<br><br>";
foreach($mapper as $cur_dir) {
    echo $cur_dir . "<br>";
}
?>


Mange tak for at bruge de sene nattetimer paa mig!
Avatar billede coderdk Praktikant
30. december 2004 - 16:22 #6
hej igen :)

Du kan godt bruge mit, men så må du tage dit webhotel lidt ad gangen:

    getSize( "folder1" );
    echo "<br><br><b>Total size: $size bytes</b>";

og næste gang

    getSize( "folder2" );
    echo "<br><br><b>Total size: $size bytes</b>";

Dit webhotel forbyder dig desværre at ændre ved timeoutsettings, så jeg tror det er den eneste mulighed du har...
Avatar billede phpbegynder2004 Nybegynder
04. januar 2005 - 02:09 #7
Undskyld at jeg bliver ved med at sige det samme, men der er stadig noget galt. Nu tager jeg kun en mappe af gangen, men den medregner kun nogle faa filer fra mappen. Ved ikke helt hvad der er galt...
Avatar billede coderdk Praktikant
04. januar 2005 - 02:19 #8
Jeg sover i timen tror jeg, prøv med:

<?php

    set_time_limit( 0 );

    $size = 0;

    function getSize( $path )
    {
        global $size;
        if ( $d = opendir( $path ) )
        {
            while ( $f = readdir( $d ) )
            {
                ( is_file( "$path/$f" ) )
                {
                    $s = filesize( "$path/$f" );
                    $size += $s;
                    echo "$path/$f " . $s . " b<br>";
                }
                elseif ( is_dir( "$path/$f" ) && $f != '.' && $f != '..' )
                {
                    getSize( "$path/$f" );
                }
            }
            closedir( $d );
        }
    }

    getSize( "." );

    echo "<br><br><b>Total size: $size bytes</b>";

?>
Avatar billede phpbegynder2004 Nybegynder
04. januar 2005 - 08:46 #9
Mange tak! Nu virker det!

Det er blot en mindre detalje, men er det muligt at se stoerrelse pr. mappe?
Det goer ikke noget hvis det er avanceret at tilbygge.
Avatar billede phpbegynder2004 Nybegynder
04. januar 2005 - 08:47 #10
Ups... Det skulle ikke have vaeret et svar... Whatever... Her er dine point...
Avatar billede coderdk Praktikant
04. januar 2005 - 10:54 #11
Yeps, det er det da:

<?php

    set_time_limit( 0 );

    $size = 0;

    function getSize( $path )
    {
        global $size;
        if ( $d = opendir( $path ) )
        {
            $foldersize = 0;
            while ( $f = readdir( $d ) )
            {
                ( is_file( "$path/$f" ) )
                {
                    $s = filesize( "$path/$f" );
                    $size += $s;
                    $foldersize += $s;
                    echo "$path/$f " . $s . " b<br>";
                }
                elseif ( is_dir( "$path/$f" ) && $f != '.' && $f != '..' )
                {
                    getSize( "$path/$f" );
                }
            }
            echo "<br><b>Size of $path: $foldersize b</b><br>";
            closedir( $d );
        }
    }

    getSize( "." );

    echo "<br><br><b>Total size: $size bytes</b>";

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester