Verzeichnisgröße ermitteln

edit | delete

Autor: Ralf v.d.Mark

eingetragen: Donnerstag, 11. Oktober 2007 um 14:22 Uhr (41/2007 Kalenderwoche)

geändert: Donnerstag, 01. Februar 2018 um 13:22 Uhr (5/2018 Kalenderwoche)

Keywords: Datei Verzeichnis Byte Bit MB GB lesbar

Kategorien: PHP,

Text:

Das Script ermittelt die größe eines Verzeichnisses inkl. aller Unterverzeichnisse

Quellcode:  

<?php
/** ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 * 
 * @name       datei: Verzeichnisgroesse_ermitteln.php
 * @abstract   Diese Dateia ermittelt die groesse eines Verzeichnisses inkl. Unterverzeichnissen
 * @author     Ralf von der Mark <ralf@website-vdm.de>
 * @copyright  Copyright (c) 2007, Ralf von der Mark, www.WebSite-vdM.de
 * @version    Version vom 11.10.2007 um 14:10:18 Uhr
 * 
 * ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */

function lese_verz_groesse($verz_pfad='.')
{
    $zaehler = 0;//Zaehler starten
    $result[$verz_pfad] = 0;
    $verzeichn = opendir($verz_pfad);
    if ($verzeichn) {
        while (false !== ($eine_datei = readdir($verzeichn))) {
            if ($eine_datei != "." && $eine_datei != "..") {
                $verz_name = $verz_pfad . "/" . $eine_datei;
                if (is_dir($verz_name)) {
                    $arr_verz = lese_verz_groesse($verz_name);
                    while (list($key, $value) = each ($arr_verz)) {
                        $zaehler++;//raufzaehlen
                        $result[$key] = $value;//gefunden
                    }//ENDE: while (list($key, $value) = each ($arr_verz))
                } else {
                    $result[$verz_pfad] += filesize($verz_name);
                }//ENDE: if (is_dir($verz_name))
            }//ENDE: if ($eine_datei != "." && $eine_datei != "..") 
        }//ENDE: while (false !== ($eine_datei = readdir($verzeichn)))
    }//ENDE: if ($verzeichn)
    closedir($verzeichn);
    return $result;
}//ENDE: function lese_verz_groesse($verz_pfad)

$data = lese_verz_groesse();//oder 'c:/www/irgendeinordner/'
$summensammlg = 0;//Summen-Variable starten
$verz_sammlg = '';//Variable starten
foreach ($data as $schluessel => $verz_groesse) {
    $summensammlg += $verz_groesse;
    $verz_sammlg .= $schluessel.' ==> '.$verz_groesse.' byte
         <br>
         ';
}//ENDE:  foreach ($array as $schluessel => $$verz_groesse) 
echo 'Gesamtgröße: '.$summensammlg.' byte
      <hr />
      '.$verz_sammlg;



function lesbare_dateigroesse($groesse, $hinter_komma)
{
    if (!empty($groesse)) {
        $a_groessen_name = array('Bytes','KB','MB','GB','TB','PB','EB','ZB','YB');
        $groesse_gerundet = round($groesse/pow(1024,($i = floor(log($groesse, 1024)))),
                                  $hinter_komma).' '.$a_groessen_name[$i];
        return str_replace('.', ',', $groesse_gerundet);
    } else {
        return '0 Bytes';
    }//ENDE: else ==> if(!empty($groesse))
}//ENDE: function lesbare_dateigroesse($groesse, $hinter_komma)