Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ile miejsca zajmuja foldery i pliki
Forum PHP.pl > Forum > Przedszkole
Hubi.pl
Witam,
napisałem cos takiego:
  1. <?php
  2. $bytes = disk_total_space(&#092;"/\"); 
  3. function getfilesize($bytes) {
  4.  if ($bytes >= pow(2,40)) {
  5.  $return = round($bytes / pow(1024,4), 2);
  6.  $suffix = &#092;"TB\";
  7.  } elseif ($bytes >= pow(2,30)) {
  8.  $return = round($bytes / pow(1024,3), 2);
  9.  $suffix = &#092;"GB\";
  10.  } elseif ($bytes >= pow(2,20)) {
  11.  $return = round($bytes / pow(1024,2), 2);
  12.  $suffix = &#092;"MB\";
  13.  } elseif ($bytes >= pow(2,10)) {
  14.  $return = round($bytes / pow(1024,1), 2);
  15.  $suffix = &#092;"KB\";
  16.  } else {
  17.  $return = $bytes;
  18.  $suffix = &#092;"Byte\";
  19.  }
  20.  if ($return == 1) {
  21.  $return .= &#092;" \" . $suffix;
  22.  } else {
  23.  $return .= &#092;" \" . $suffix . \"s\";
  24.  }
  25.  return $return;
  26. }
  27. echo getfilesize(pow(2,30));
  28. ?>  


ale niestety wynnik $bytes nie jest poprawnie konwertowany na większe jednostki jak kb, mb, gb...

Efekt końcowy, który chciałbym otrzymac, to zliczenie ile miejsca zajmują wszystkie foldery i podfoldery oraz pliki, a nastepnie przedstawienie wyniku ich pojemności we wszystkich jednostkach.

Proszę o pomoc smile.gif

Pozdrawiam
crash
Ja używam takiej funkcji:
  1. <?php
  2. function f_size($p)
  3. {
  4. $sizes = array('B', 'kB', 'MB', 'GB', 'TB');
  5.  
  6. $pos = 0;
  7.  
  8. $rozm = filesize($p);
  9.  
  10. while($rozm >= 1024)
  11. {
  12. $rozm /= 1024;
  13. $pos++;
  14. }
  15. return round($rozm, 2).$sizes[$pos];
  16. }
  17. ?>
Hubi.pl
Heh, zadam głupie pytanie, ale ta funkcja mi nic nie zwraca biggrin.gif czysty plik:P

pzdr.
Sabistik
  1. <?php
  2. echo f_size(&#092;"plik.zip\");
  3. ?>


wyswietli wielkosc pliku plik.zip

ps. fajna funkcja az sobie ja zapisalem biggrin.gif
Hubi.pl
tak, tylko ja potrzebuję zliczyć wielkosc folferów + podfolderów + plików...
a ta funkcja jest do konkretnego pliku bądź folderu...

pzdr.
crash
Ahh, szczegóły, szczegóły:
  1. <?php
  2. function f_size($p)
  3. {
  4. $sizes = array('B', 'kB', 'MB', 'GB', 'TB');
  5.  
  6. $pos = 0;
  7.  
  8. while($p >= 1024)
  9. {
  10. $p /= 1024;
  11. $pos++;
  12. }
  13. return round($rozm, 2).$sizes[$pos];
  14. }
  15. ?>
hwao
Cytat(Hubi.pl @ 2005-02-12 00:01:30)
tak, tylko ja potrzebuję zliczyć wielkosc folferów + podfolderów + plików...
a ta funkcja jest do konkretnego pliku bądź folderu...

pzdr.

Otwierasz dir kazdy plik filesize" title="Zobacz w manualu PHP" target="_manual() potem pokoleji katalogi jedziesz...
Napisz sobie taka funkcje (dodasz wszytkie cool.gif i potem do funkcji ktora dostales i juz masz...

Pozatym nic sie nie stanie jak skozystasz z manuala (komentarzy)

Dir" title="Zobacz w manualu PHP" target="_manual()

Btw (ta funckja filesize pokazuje wielkosc pliku - na co chosby wskazuje jej nazwa file )
Hubi.pl
Cytat(crashu @ 2005-02-12 08:45:33)
hwao: a nie łatwiej użyć disk_total_space" target="_blank() ?

ja też uważam że z tym jest łatwiej... tylko chodzi mi o przeliczenie wyniku na poszczególne jednostki.....

questionmark.gifquestionmark.gif?

pzdr.
crash
No już dostałeś funkcję przeliczająca, całość będzie wyglądać tak:
  1. <?php
  2. function f_size($p)
  3. {
  4.     $sizes = array('B', 'kB', 'MB', 'GB', 'TB');
  5.     
  6.     $pos = 0;
  7.     
  8.     while($p >= 1024)
  9.     {
  10.       $p /= 1024;
  11.       $pos++;
  12.     }
  13.     return round($p, 2).$sizes[$pos];
  14. }
  15.  
  16. echo  f_size(disk_total_space('/') - disk_free_space('/'));
  17. ?>
Hubi.pl
Cytat(crashu @ 2005-02-12 09:15:31)
No już dostałeś funkcję przeliczająca, całość będzie wyglądać tak:
  1. <?php
  2. function f_size($p)
  3. {
  4. $sizes = array('B', 'kB', 'MB', 'GB', 'TB');
  5.  
  6. $pos = 0;
  7.  
  8. while($p >= 1024)
  9. {
  10. $p /= 1024;
  11. $pos++;
  12. }
  13. return round($rozm, 2).$sizes[$pos];
  14. }
  15.  
  16. echo f_size(disk_total_space('/') - disk_free_space('/'));
  17. ?>

ten skrypt ciągle zwraca 0 sad.gif

kombinowałem coś takiego, ale też nie działa sad.gif

  1. <?php
  2. $p = disk_total_space(&#092;"/\");
  3. function disk_total_space($p)
  4. {
  5. $sizes = array('B', 'kB', 'MB', 'GB', 'TB');
  6.  
  7. $pos = 0;
  8.  
  9. while($p >= 1024)
  10. {
  11. $p /= 1024;
  12. $pos++;
  13. }
  14. return round($rozm, 2).$sizes[$pos];
  15. }
  16. ?>
  17. <?php
  18. echo disk_total_space(&#092;"$p\");
  19. ?>


What's wrong?
crash
Eee, mały błąd się wkradł do tej funkcji, gdybyś pomyślał to byś znalazł, popraw zwracanie na:
  1. <?php
  2. return round($p, 2).$sizes[$pos];
  3. ?>
Hubi.pl
też tak się zastanawiałem, dlaczego te zmienne się różnią, ale zmieniłem to już wcześniej i działą smile.gif

Big THX za pomoc i .. EOT.

pzdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.