kostenloser Webspace werbefrei: lima-city


Größe von mehrern Unterordnern herausfinden | Fehlermeldung beim Unterordner nicht aber beim "normalen" Ordner

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    lucas9991

    Kostenloser Webspace von lucas9991

    lucas9991 hat kostenlosen Webspace.

    Guten Abend liebe Lima City Community! :)

    Ich w?rde gerne den verbrauchten Platz von meinem Lima Account festestellen.
    Dazu habe ich ein Script ein wenig umgeschrieben.
    Das Script funtzt auch wunderbar, wenn ich das "HIER" weglasse.
    Wenn ich es aber aufrufe, um auch die Unterordner zu erfassen, dann kommen folgende Fehlermeldungen :
    Warning: filetype() [function.filetype]: Lstat failed for fotos in C:\server\htdocs\platz.php on line 61

    Leider wei? ich damit nichts anzufangen.
    php.net spuckt auch nichts vern?nftiges aus.

    function open ($dir, $size = '0') {
      $d = opendir ($dir);
      while (($file = readdir ($d)) !== false) {
        if ($file != '.' && $file != '..') {
          $pfad = $dir.$file;
          if (filetype ($file) === 'dir') {
            $pfad .= '/';
            printf ('DIR : %s<br/>', $pfad);
            $size = open ($pfad, $size); // <-------- HIER
          } else {
            printf ('FILE : %s<br/>', $pfad);
            $size += filesize ($pfad);
          }
        }
      }
      closedir ($d);
      return $size;
    }
    $size = open ('i-cms/', '0');
    
    
    $size_mb = round ($size / 1024 / 1024, '5');
    printf ('Es werden %s MB belegt', $size_mb);
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    lucas9991

    Kostenloser Webspace von lucas9991

    lucas9991 hat kostenlosen Webspace.

    Hat keiner eine Idee?
  4. c*********c

    Ist es denn notwendig, den 2. Parameter in der Funktion auch anzugeben, obwohl er direkt von der Funktion definiert wird (deklarieren ist nicht n?tig, oder?)

  5. Autor dieses Themas

    lucas9991

    Kostenloser Webspace von lucas9991

    lucas9991 hat kostenlosen Webspace.

    Deklariert wird er ja durch den Aufruf der Funktion.
    Ich habe es mit der ?bergabe der Gr??e so gemacht, man k?nnte den auch einfach jedes mal per "global" in die Funktion "reinholen".

    Beitrag ge?ndert am 18.07.2005 23:00 von lucas9991
  6. Hiho!

    Rekursion in PHP ist ein lustiges Thema.

    Ich glaube nicht, dass der Fehler an der Stelle "HIER" auftritt. Ich w?rde eher auf den filetype()-Befehl tippen. Denn die Fehlermeldung faselt etwas von "lstat filed". F?ge in deinen Quellcode doch mal ein paar echo()-Befehle (oder printf()'s) ein, die dir deine Variablen ausgeben. Zum Beispiel dein zusammengesetzter Pfadname k?nnte nicht mit dem realen Pfadnamen ?bereinstimmen.

    Na gut, heute mal die [&#1089;&#1086;d&#1077;]-Blocks:

    function open ($dir, $size = '0') {
      printf("dir: [[%s]]<br />", $dir);
      $d = opendir ($dir); 
      while (($file = readdir ($d)) !== false) {
        if ($file != '.' && $file != '..') {
          $pfad = $dir.$file;
          printf("pfad: [[%s]]<br />", $pfad);
          printf("file: [[%s]]<br />", $file);
           if (filetype ($file) === 'dir') {
    ...


    Und ich w?rde sagen, dass filetype() den ganzen Pfad ($dir.$file?) als Parameter verlangt, nicht nur das letzte Teilst?ck ($file?).

    MfG
    alopex

    Beitrag ge?ndert am 19.07.2005 13:30 von alopex
  7. Autor dieses Themas

    lucas9991

    Kostenloser Webspace von lucas9991

    lucas9991 hat kostenlosen Webspace.



    alopex schrieb:
    Hiho!

    Rekursion in PHP ist ein lustiges Thema.

    Ich glaube nicht, dass der Fehler an der Stelle 'HIER' auftritt. Ich w?rde eher auf den filetype()-Befehl tippen. Denn die Fehlermeldung faselt etwas von 'lstat filed'. F?ge in deinen Quellcode doch mal ein paar echo()-Befehle (oder printf()'s) ein, die dir deine Variablen ausgeben. Zum Beispiel dein zusammengesetzter Pfadname k?nnte nicht mit dem realen Pfadnamen ?bereinstimmen.

    Habe ich bereits vor der Er?ffnung des Thread gemacht.


    Na gut, heute mal die [&#1089;&#1086;d&#1077;]-Blocks:

    Kuhl! :biggrin:


    Und ich w?rde sagen, dass filetype() den ganzen Pfad ($dir.$file?) als Parameter verlangt, nicht nur das letzte Teilst?ck ($file?).

    So habe ich es doch geschrieben! ^^
    Au?erdem funktioniert das Script ja einwandfrei bis auf die Unterordner...
  8. B?h, gro?er CMS-Meister!
    :tongue:

    Komm mal ein bisschen von deiner Unfehlbarkeit herunter. Wenn sich dein engster Fanclub schon die M?he macht, deine Codes zu durchforsten, dann solltest du das auch tun:

    $size = open ($_SERVER['DOCUMENT_ROOT'].'/html/tpl', '0');
    $size_mb = round ($size / 1024 / 1024, '5');
    printf ('Es werden %s MB belegt', $size_mb);
    
    function open ($dir, $size = '0') {
      $d = opendir ($dir);
      while (($file = readdir ($d)) !== false) {
        if ($file != '.' && $file != '..') {
          // hier hast du den Slash vergessen!!!
          $pfad = $dir.'/'.$file;
          // hier hast du nicht den ganzen Pfad 
          // angegeben!!!
          if (filetype ($pfad) === 'dir') {
            $pfad .= '/';
            printf ('DIR : %s<br/>', $pfad);
            $size = open ($pfad, $size); 
          } else {
            printf ('FILE : %s<br/>', $pfad);
            $size += filesize ($pfad);
          }
        }
      }
      closedir ($d);
      return $size;
    }


    Dscheggsd es?

    Jetzt funktioniert es einwandfrei mit Unterordnern. :cool:

    Deinen Startpfad musst du nat?rlich selber wieder geradebiegen.

    BTW: K?nntest du das bitte um eine Angabe in Bytes und KibiBytes oder kBytes erg?nzen? Und das Ganze in eine sch?ne Funktion verpacken? Das kann man immer mal brauchen ...

    MfG
    alopex

    P.S.: Daf?r habe ich jetzt 15 Minuten meines kostbaren Lebens geopfert ...
  9. Autor dieses Themas

    lucas9991

    Kostenloser Webspace von lucas9991

    lucas9991 hat kostenlosen Webspace.


    B?h, gro?er CMS-Meister!
    :tongue:

    Komm mal ein bisschen von deiner Unfehlbarkeit herunter. Wenn sich dein engster Fanclub schon die M?he macht, deine Codes zu durchforsten, dann solltest du das auch tun:

    Sry, wenn das so r?ber kam.
    Herzlichen Dank, das mein lieber Fanclub sich darum k?mmert! :wink:


    $size = open ($_SERVER['DOCUMENT_ROOT'].'/html/tpl', '0');
    $size_mb = round ($size / 1024 / 1024, '5');
    printf ('Es werden %s MB belegt', $size_mb);
    
    function open ($dir, $size = '0') {
      $d = opendir ($dir);
      while (($file = readdir ($d)) !== false) {
        if ($file != '.' && $file != '..') {
          // hier hast du den Slash vergessen!!!
          $pfad = $dir.'/'.$file;
          // hier hast du nicht den ganzen Pfad 
          // angegeben!!!
          if (filetype ($pfad) === 'dir') {
            $pfad .= '/';
            printf ('DIR : %s<br/>', $pfad);
            $size = open ($pfad, $size); 
          } else {
            printf ('FILE : %s<br/>', $pfad);
            $size += filesize ($pfad);
          }
        }
      }
      closedir ($d);
      return $size;
    }


    Dscheggsd es?

    Jetzt funktioniert es einwandfrei mit Unterordnern. :cool:

    Juppee :D



    Deinen Startpfad musst du nat?rlich selber wieder geradebiegen.

    BTW: K?nntest du das bitte um eine Angabe in Bytes und KibiBytes oder kBytes erg?nzen? Und das Ganze in eine sch?ne Funktion verpacken? Das kann man immer mal brauchen ...

    MfG
    alopex

    Sonst nochwas? :biggrin:
    Ich werds mich n?chste Woche drum k?mmern! :)


    P.S.: Daf?r habe ich jetzt 15 Minuten meines kostbaren Lebens geopfert ...

    Herzlichen Danke schlauer liebenswerter Fux! xD
  10. Hiho!

    Anscheinend hilft es, wenn man dich ab und zu mal anschei?t ... :biggrin:

    Auf
    http://de.php.net/manual/de/function.filesize.php
    befinden sich auch 'ne Menge Beispiele f?r das rekursive Abklappern von Verzeichnissen zum Zwecke der Dateigr??enbestimmung. Einige sehen k?rzer aus als dein Code. Allerdings wei? ich nicht, ob sie auch funktionieren ...

    Und, hast du schon mal
    http://de.php.net/manual/de/function.disk-total-space.php
    gesehen?

    Das d?rfte das Gleiche in einem Befehl erledigen ...

    Es gilt auch zu bedenken, dass die mit filesize() ermittelte Gr??e nicht unbedingt die Gr??e des belegten Festplattenspeichers angibt. Dateien belegen Festplatten in Bl?cken oder Clustern (mehrere Bl?cke). Au?erdem speichern "moderne" Filesysteme gerne auch noch zus?tzliche Daten "unsichtbar" in "alternative data streams". Die vergr??ern alle den ben?tigten Platz, sind aber mit filesize() nicht zu ermitteln.

    MfG
    alopex
  11. Autor dieses Themas

    lucas9991

    Kostenloser Webspace von lucas9991

    lucas9991 hat kostenlosen Webspace.



    alopex schrieb:
    Hiho!

    Anscheinend hilft es, wenn man dich ab und zu mal anschei?t ... :biggrin:

    :thefinger::thefinger::thefinger:


    Auf
    http://de.php.net/manual/de/function.filesize.php
    befinden sich auch 'ne Menge Beispiele f?r das rekursive Abklappern von Verzeichnissen zum Zwecke der Dateigr??enbestimmung. Einige sehen k?rzer aus als dein Code. Allerdings wei? ich nicht, ob sie auch funktionieren ...

    Und, hast du schon mal
    http://de.php.net/manual/de/function.disk-total-space.php
    gesehen?

    Das d?rfte das Gleiche in einem Befehl erledigen ...

    Es gilt auch zu bedenken, dass die mit filesize() ermittelte Gr??e nicht unbedingt die Gr??e des belegten Festplattenspeichers angibt. Dateien belegen Festplatten in Bl?cken oder Clustern (mehrere Bl?cke). Au?erdem speichern 'moderne' Filesysteme gerne auch noch zus?tzliche Daten 'unsichtbar' in 'alternative data streams'. Die vergr??ern alle den ben?tigten Platz, sind aber mit filesize() nicht zu ermitteln.

    MfG
    alopex

    Ja, ist ja gut! :p
    Ich habe noch ein sch?nes Script (auch Seite) dazu gefunden.
    http://aidan.dotgeek.org/lib/?file=function.dirsize.php

    Dort gibt es interessante Scripts.
    z.B. Highlighting (?)
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!