Avatar billede spidr Nybegynder
15. august 2003 - 14:44 Der er 59 kommentarer og
1 løsning

Størrelse af site

Kan det slet ikke lade sig gøre at lave et script der udskriver hvor meget HELE ens site fylder??
Evt. hvor mange mapper? filer? billeder?
Og hvor meget selve stats.php fylder??
Avatar billede gonza.dk Nybegynder
15. august 2003 - 14:52 #1
Tjoo, det tror jeg skam godt, det kræver bare en masse kode ;o)

Hvis du sammenkobler noget opendir()/readdir() og filesize() og så bruger noget matematik og nogle loops, ja så kan det vel godt lade sig gøre...

http://scripts.gonza.dk/list_dir/
Avatar billede fangel Nybegynder
15. august 2003 - 15:02 #2
gonza => undskyld at skulle rette på dig - men dit script har en del mangler (rekursivitet anyone?) - skriver lige et bedre - hold on

Morten
Avatar billede gonza.dk Nybegynder
15. august 2003 - 15:03 #3
dea_pg -> hvilke mangler er der i det?
Avatar billede fangel Nybegynder
15. august 2003 - 15:05 #4
rekursivitet! loope gennem mapper osv... (kan også udvides så det kommer emd en masse god info om ens side - antal af de forskellige filer)

Morten
Avatar billede gonza.dk Nybegynder
15. august 2003 - 15:09 #5
aah, forstod ikke lige hvad rekursivitet betød ;o) har åbenbart lagt den forkerte op, uden at vide det så, har haft lavet en der kan loope gennem mapper, kan være jeg har slettet den istedet for den anden :-/
Avatar billede fangel Nybegynder
15. august 2003 - 15:34 #6
hæhæ - det sker jo ;)

har lige lavet denne: http://mfa.ath.cx/LIB/fileList.2.php

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 16:38 #7
Siden kan ikke vises?
Avatar billede fangel Nybegynder
15. august 2003 - 17:00 #8
min? for min server kører - og jeg kan godt selv fange den...

laver lige nogle dobbel-tjek af tingene...

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 17:22 #9
virker måske nu - har lidt problemer med dns systemet - men hvis du ikke kan tilgå den, så prøv via min IP...

http://80.199.149.26/LIB/fileList.2.php

Morten
Avatar billede gonza.dk Nybegynder
15. august 2003 - 17:24 #10
det er ligesom om den starter et script, og så kommer: siden kan ikke vises
Avatar billede tipsen Nybegynder
15. august 2003 - 17:29 #11
Desc        : Convert a arabic number to roman number

Det fungerer, men er meget langsomt... - og beskrivelsen er vist lidt hen i vejret...
Avatar billede fangel Nybegynder
15. august 2003 - 17:52 #12
tipsen => sorry - kopierede bare hele kommentare fra et andet script - dden hører til på ara2rom.php (og den er ikke langsom)

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 17:53 #13
og hvis nogen stadig ikke kan se den, så er kildekode her:

--
<?php

/*

Licens        : GPL
Author        : Morten Fangel
Year        : 2003
Desc        : Generates a list of files in a dir incl. subdirs

Notes        :    public function is getFileList($dirname);
            array starts with [1]

Returns        : a array with the following info:
            if file:
                type => FILE
                name => name of the file
                size => size of file in bytes
                lastMod => uniz-timestamp of last modified date
            if dir:
                type => DIR
                name => name of dir

*/

function fileList($dir){
  global $returnArr, $i;

  if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
          $i++;
          if(is_dir($dir . "/" . $file)){
            $returnArr[$i]['type'] = "DIR";
            $returnArr[$i]['name'] = $dir . "/" . $file;

            // recursive calling
            fileList($dir . "/" . $file);
          }
          else {
            $returnArr[$i]['type'] = "FILE";
            $returnArr[$i]['name'] = $dir . "/" . $file;
            $returnArr[$i]['size'] = filesize($dir . "/" . $file);
            $returnArr[$i]['lastMod'] = filemtime($dir . "/" . $file);
          }
        }
    }
    closedir($handle);
  }
}

function getFileList($dirname){
  $returnArr = array();
  $i = 0;
  global $returnArr, $i;

  fileList($dirname);

  return $returnArr;
  unset($returnArr);
}

show_source(__FILE__);

?>
---

og ang. hastighed, så er den ikke overhovedet optimeret!

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 17:59 #14
Den der kode printer jo bare source koden ud og fjerne man show_source(__FILE__); resultere den i ingen ting??
Kan ikke rigtig se hvad koden går ud på og hvad man skal gøre ved den? :S
Avatar billede tipsen Nybegynder
15. august 2003 - 18:09 #15
Det var ikke scriptets hastighed, men din servers hastighed - jeg kunne læse dit script hurtigere end det blev vist på min browser!
Avatar billede tipsen Nybegynder
15. august 2003 - 18:10 #16
spidr: Kender du til at bruge funktioner i php?
Avatar billede spidr Nybegynder
15. august 2003 - 18:11 #17
Ik ret meget nej.. ?
Avatar billede fangel Nybegynder
15. august 2003 - 18:15 #18
fjern show_source() og erstat det med

getFileList("mappe/du/vil/gennemse");

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 18:16 #19
tipsen => min server er min workstation og en 256/128 linie ;) (og jeg er ikke alene om den)

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 18:17 #20
og funktionen returnere et array, så du skal selv finde ud af at få info fra array til noget du kan bruge til noget

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 18:21 #21
Hva hvis det ikke er en bestem mappe men HELE serveren? :)
Avatar billede fangel Nybegynder
15. august 2003 - 18:29 #22
så skriver du fx ".", så er det alle filer fra og med den mappe scriptet ligger i ;)

derefter laver du lidt php der tæller alle 'size' sammen, og udskriver dette

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 19:40 #23
Den virker ikke den skriver bare ingen ting? :)
Avatar billede fangel Nybegynder
15. august 2003 - 19:42 #24
læs det jeg skriver:

--- 18:17:37 ---
og funktionen returnere et array, så du skal selv finde ud af at få info fra array til noget du kan bruge til noget
---

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 19:51 #25
Åh havde jeg ikke set...
Men kan ikke rigtig set hvad jeg skal gøre :(
Troede
getFileList(".");
den skrev det ud..
Avatar billede fangel Nybegynder
15. august 2003 - 19:55 #26
nope...

prøv fx:

print_r(getFileList("."));

så for du udskrevet alle info i arrayet (ikke i en særlig pæn måde, det er bedst at se det i "vis kilde", da linieskift ellers ikke bliver vist!)

Moretn
Avatar billede spidr Nybegynder
15. august 2003 - 19:59 #27
Og så var det den gik HELT amok :S
Argh ville egentligt bare have avide hvor meget det hele fyldte :S
Avatar billede fangel Nybegynder
15. august 2003 - 20:03 #28
prøv:

// funktionen

$arr = getFileList(".");
echo "du har " . array_sum($arr['size']) . " bytes filer på din server!";

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 20:03 #29
det vil måske give lidt fejl, men så laver jeg lige en anden funktion til at regne summen ud

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 20:11 #30
Warning: The argument to array_sum() should be an array in /customers/goog.dk/goog.dk/httpd.www/test.php on line 62
du har bytes filer på din server!
:(
Avatar billede fangel Nybegynder
15. august 2003 - 20:14 #31
jep, så kan den ikke helt...

prøv dette så:

---
<?php
//funktionen

$size = 0;
$arr = getFileList(".");
for($i = 0; count($arr) > $i; $i++)
  if(isset($arr[$i]['size']))
    $size += $arr[$i]['size'];
echo "du har $size bytes på din server!";
?>
---

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 20:21 #32
Wow har 93548478 bytes på serveren :S
Taaak for scriptet :D
Hmm hvordan får jeg den ned til mb? dividere det med 1024 så er det kb og hva så for mb? 1024 mere?
Avatar billede fangel Nybegynder
15. august 2003 - 20:23 #33
jep ;)

laver lige en anden funktion for at lave sådan noget ;)

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 20:24 #34
Taark :D:D
Avatar billede fangel Nybegynder
15. august 2003 - 21:47 #35
denne funktion er meget sjov:

---
function formatFileSize($size, $type="plain"){
  if($type=="funky"){
    if($size >= (1024*1024)){
      $returnStr = floor($size / (1024/1024)) . "mb";
      $size = $size % (1024*1024);
    }
    if($size >= 1024){
      if(isset($returnStr)) $returnStr .= " og " . floor($size/1024) . "kb";
      else $returnStr = floor($size/1024) . "kb";
      $size = $size % 1024;
    }
    if($size >= 1){
      $returnStr .= " og " . $size . "b";
    }
    return $returnStr;
  }
  else{
    if($size >= 1024){
      $size /= 1024;
      $ext = "kb";
    }
    if($size >= 1024){
      $size /= 1024;
      $ext = "mb";
    }
    $size = round($size, 2);
    return $size . $ext;
  }
}
---

du kan bruge den sådan her:

echo formatFileSize([størrelse på fil]);

eller den sjove måde:

echo formatFileSize([størrelse på fil], "funky");

Morten
Avatar billede fangel Nybegynder
15. august 2003 - 21:47 #36
og jeg lægger lige et svar ;)

svaa'r

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 21:58 #37
Tak det er kanont :) Kan man ikke også bruge det til at finde ud af hvornår der sidst er oploadet noget???
Avatar billede fangel Nybegynder
15. august 2003 - 22:00 #38
du kan bare finde største værdi af ['lastMod']

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 22:02 #39
Dea>> heh hvordan ku jeg gøre det?
Lige noget herlt andet, hvordan har du lært at kode sådan at du bare kan det?
Og den der kode du gav mig skriver bare
Parse error: parse error, unexpected '[', expecting ')' in /customers/goog.dk/goog.dk/httpd.www/test.php on line 99
:(
Avatar billede fangel Nybegynder
15. august 2003 - 22:08 #40
du skal jo nok udskifte "[størrelse på fil]" med din faktiske størrelse af din fil, fx "93548478"

---

og jeg har lært at kode sådan ved at læse en masse artikler, hæftet "start på php" (fra idg, 69kr) og så ellers kigge med når ekspertene herfra folder sig ud - så bliver man tilsidst en af eksperterne

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 22:14 #41
Heh jeg har altid være god til at sprøge som du nok kan se hehe :)
Og har også læst en del fra idg :) Men det skal os nok komme kan da en del ;)
Jamen hvordan får jeg den faktisk størelse??
$returnArr[$i]['size'] ??
Avatar billede fangel Nybegynder
15. august 2003 - 22:25 #42
prøv selv - gennemløb hele arrayet og fin det højeste - jeg har ikke lige overskud til at lave det lige nu

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 22:30 #43
Ok men den retunere altså helt forkert :(
89229549407959mb og 547kb og 727b uskriver den :S Det er liiidt mange mega bytes :S
Avatar billede fangel Nybegynder
15. august 2003 - 22:33 #44
sorry - er ikke så testet ;)

      $returnStr = floor($size / (1024/1024)) . "mb";

skal slf være

      $returnStr = floor($size / (1024*1024)) . "mb";

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 22:34 #45
Tænkte faktisk på de t:D
Avatar billede spidr Nybegynder
15. august 2003 - 22:40 #46
Hvis jeg nu skriver 89229549407959 i den der
echo formatFileSize(XX, "funky");
så retunere den rigtig nok men det er jo ikk det rigtige det skal jo opdateres hele tiden, hvad skal jeg skrive der ind??
hvis jeg skriver $returnArr[$i]['size'] så skriver den ikke noget ud :(
Avatar billede spidr Nybegynder
15. august 2003 - 22:43 #47
Weee fandt ud af det :D:D
Avatar billede fangel Nybegynder
15. august 2003 - 22:43 #48
---
<?php
//funktionerne

$size = 0;
$arr = getFileList(".");
for($i = 0; count($arr) > $i; $i++)
  if(isset($arr[$i]['size']))
    $size += $arr[$i]['size'];
echo "du har " . formatFileSize($size) . " filer på din server!";
?>
---

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 23:05 #49
Ok hvis du gider i morgen eller noget kan du så ikke lige gøre det der med at finde den største $returnArr[$i]['lastMod'] så man få datoen for sidst oploadede ting??
Avatar billede fangel Nybegynder
15. august 2003 - 23:12 #50
---
<?php
//funktionerne

$size = 0;
$arr = getFileList(".");
for($i = 0; count($arr) > $i; $i++)
  if(isset($arr[$i]['size']))
    $size += $arr[$i]['size'];
echo "du har " . formatFileSize($size) . " filer på din server!";

$max = 0;
for($i = 0; count($arr) > $i; $i++)
  if(isset($arr[$i]['lastMod']))
    if($max < $arr[$i]['lastMod'])
      $max = $arr[$i]['lastMod'];
echo " den seneste fil er blevet uploadet følgende dato: " . date(j/n-Y - H:i:s", $max);
?>
---

Morten
Avatar billede tipsen Nybegynder
15. august 2003 - 23:25 #51
Et alternativ til formatFileSize():

function file_size_convert($filesize){
    $sizetitles = array('B', 'KB', 'MB', 'GB', 'TB');
    $tmpcount = 0;
    while($filesize >= 1024 && $tmpcount < count($sizetitles)) {
        $filesize /= 1024;
        $tmpcount++;
    }
    return sprintf('%0.2f', $filesize) . ' ' . $sizetitles[$tmpcount];
}
echo file_size_convert(999999999);
Avatar billede spidr Nybegynder
15. august 2003 - 23:26 #52
Parse error: parse error, unexpected ':' in /customers/goog.dk/goog.dk/httpd.www/portal/infos.php on line 225

Den parse error fyre den af??
Kan man egentligt bestemme hvormange decimaler der skal være på et tal en php aray udløser??
Avatar billede spidr Nybegynder
15. august 2003 - 23:29 #53
Size: 89mb, 246kb og 530bytes
du har 90.39mb filer på din server!
<--Argh hva sker der?
Den første er den vi først lavede den neden under er den du lige lavede altså:
$size = 0;
$arr = getFileList(".");
for($i = 0; count($arr) > $i; $i++)
  if(isset($arr[$i]['size']))
    $size += $arr[$i]['size'];
echo "du har " . formatFileSize($size) . " filer på din server!";
Avatar billede fangel Nybegynder
15. august 2003 - 23:40 #54
date(j/n-Y - H:i:s", $max);

skal være

date("j/n-Y - H:i:s", $max);

tipsen => har ikke giddet optimere noget kode - det viker - det må være fint nok  til spidr's behov ;)

Morten
Avatar billede spidr Nybegynder
15. august 2003 - 23:44 #55
Åh ja der manglede liige den der i starten :)
Tusin tak nu virker det :)
Avatar billede spidr Nybegynder
15. august 2003 - 23:56 #56
Hva med stats om hver mappe??
Så den udskriver en string til hver mappe på serveren, og fortæller hvor meget den fylder? evt. hvor mange filer der er i??
Og kunne man selv bestemme antal desimaler i noget en php string skyder ud?
Avatar billede tipsen Nybegynder
16. august 2003 - 00:08 #57
dea: Det var bare noget jeg havde lavet for et par uger siden - og synes egentlig det var meget "sødt" ;-)
Avatar billede fangel Nybegynder
16. august 2003 - 00:10 #58
jeg gidder i hvert fald ikke - prøv selv at se om du kan lave det ud fra det script jeg har lavet!

tipsen => don't we all? ;)

---

slut fra de højere luftlag - der er en seng der kalder på mig ;)

Morten
Avatar billede fangel Nybegynder
16. august 2003 - 09:47 #59
tak fr point ;)
Avatar billede nicklasb Nybegynder
16. august 2003 - 22:33 #60
det lyder aldermest som om det sidste du søger, er en form for fil-manager. Prøv evt. at tage et kig på Sukos's http://www.sukos.dk/php/file-manager/
Der er godt nok ikke indikering af størrelsen på filer og mapper. Men også mest ment som en idé til hvordan du kunne få det til at virke. Så kan du jo evt selv prøve at sætte de to sammen, eller udbygge det ene ud fra koden i det andet ;D
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