Toon posts:

[PHP] problemen calc space

Pagina: 1
Acties:
  • 27 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik het via google gezocht en bij php.net het volgende gevonden en bekeken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function dskspace($dir)
{
   $s = stat($dir);
   $space = $s["blocks"]*512;
   if (is_dir($dir))
   {
     $dh = opendir($dir);
     while (($file = readdir($dh)) !== false)
       if ($file != "." and $file != "..")
         $space += dskspace($dir."/".$file);
     closedir($dh);
   }

   return $space;
}


wanneer ik deze uitvoer op een bepaalde map krijg ik als resultaat terug:
-3072

terwijl de map een grote bevat van 947.392bytes. iemand enig idee wat ik fout doe? ik begrijp zowiezo al niet hoe hij aan het negatieve komt...

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$size = 0;
$directory = opendir($dir);
while ($file = readdir($directory))
{
    if (is_file($dir.$file))
    {
        $size = $size + filesize($dir.$file);
    }
}  
function convert_bytes_to_readable($size) 
{
    if($size< 1024){
        return $size . ' b';
    } else {
        if(($size/1024) < 1024){
            return round(($size/1024), 1) . ' Kb';
        } else {
            if(($size/(1024*1024)) < 1024){
                return round(($size/(1024*1024)), 1) . ' Mb';
            }else{
                return round(($size/(1024*1024*1024)), 1) . ' Gb';
            }
        }
    }
}


geeft je een ideaal antwoord

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 11-02 16:38

--MeAngry--

aka Qonstrukt

Ik vermoed dat ergens in die functie stat als waarde false teruggeeft en je daarom op rare nummers uitkomt. Even controleren dus of $s !== false voordat je gaat optellen. :)

Tesla Model Y RWD (2024)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:21

Janoz

Moderator Devschuur®

!litemod

Waarschijnlijk heb je hier te maken met de maximale grootte van een integer en is deze tijdens het optellen omgeslagen.

Ga eens debuggen en druk binnen je functie eens telkens af hoe groot $space tot nu toe is.


edit: Misschien ook wel onzin aangezien php van een int best ineens een double kan maken.

[ Voor 18% gewijzigd door Janoz op 24-08-2006 13:15 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
edit:
uhmmm probleem, via dat script wat ik mijn reply staat pakt hij geen subdirs.... iemand nog suggesties?

ik moet dus wel met het eerste voorbeelds verder, alleen krijg ik dus rare results

[ Voor 89% gewijzigd door Verwijderd op 24-08-2006 13:25 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:21

Janoz

Moderator Devschuur®

!litemod

Het eerste script berekent de grootte middels stat en dat werkt niet. Het tweede script gebruikt de functie filesize en dat werkt wel. Het eerste neemt subdirs wel mee en het tweede niet. Als je nu gewoon even het deel van beide scripts neemt dat wel werkt ben je klaar. Als je dat niet lukt dan ben je hier duidelijk niet op de jusite plek. Het is hier niet de bedoeling dat je 2 gekopieerde scriptjes post en aan anderen vraagt hoe de functionaliteiten gemerged kunnen worden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.