|  | 		    
					
        
         
          
         
	
          | |  | Længde af uncompressed GZ-fil Fra : Kasper Johansen
 | 
 Dato :  09-06-06 17:38
 | 
 |  | Hej gruppe.
 
 
 Jeg vil gerne indlæse en meget stor GZ-fil. Jeg uncompresser den
 on-the-fly via. gz-funktionerne.
 
 For at fortælle brugeren, hvor langt han er nået, viser jeg en statusbar
 (det skal måske siges, at jeg arbejder med en GTK-brugergrænseflade
 sammen med PHP). Desværre ved jeg ikke, hvor langt jeg er nået, da jeg
 jo kun kan tælle de ukomprimerede antal bytes (hvilket typisk kan ligge
 mellem 0 - 12 ganges forskel af den oprindelig størrelse).
 
 Har jeg en mulighed for at vide, hvor mange bytes det ukomprimerede
 indhold af GZ-filen fylder? Eller på en anden måde vide hvor langt, jeg
 er nået med indlæsningen af filen.
 
 
 --
 Med venlig hilsen
 Kasper Johansen
 
 
 |  |  | 
  Michael Rasmussen (09-06-2006) 
 
	
          | |  | Kommentar Fra : Michael Rasmussen
 | 
 Dato :  09-06-06 19:02
 | 
 |  | 
 
            On Fri, 09 Jun 2006 18:38:20 +0200, Kasper Johansen wrote:
 > 
 > Har jeg en mulighed for at vide, hvor mange bytes det ukomprimerede
 > indhold af GZ-filen fylder? Eller på en anden måde vide hvor langt, jeg
 > er nået med indlæsningen af filen.
 Nu ved jeg ikke, hvilken implementation du bruger, men hvis det er
 denne: http://dk.php.net/manual/da/ref.zip.php Så har den denne funktion: zip_entry_filesize
 For et komplet eksempel, se ovenstående link.
 -- 
 Hilsen/Regards
 Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917 |  |  | 
  Kasper Johansen (09-06-2006) 
 
	
          | |  | Kommentar Fra : Kasper Johansen
 | 
 Dato :  09-06-06 20:41
 | 
 |  |  |  |  | 
   Michael Rasmussen (09-06-2006) 
 
	
          | |  | Kommentar Fra : Michael Rasmussen
 | 
 Dato :  09-06-06 22:01
 | 
 |  | 
 
            On Fri, 09 Jun 2006 21:41:17 +0200, Kasper Johansen wrote:
 > 
 > Det er zlib som bruges til gz, og det er den, som jeg bruger.
 > http://dk.php.net/manual/da/ref.zlib.php Hvis ikke du anvender php i safe_mode, kan du gøre følgende:
 // getSize.php
 <?php
     $file = "test.gz";
     $output = shell_exec("sh getSize.sh $file");
     echo $output;
 ?>
 // getSize.sh
 #!/bin/sh
 PATH=/bin:/usr/bin
 gzip -l $1 | awk '/[0-9]/ {print $1}'
 exit 0
 [mir@loke:/tmp]$ php getSize.php
 90833
 -- 
 Hilsen/Regards
 Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917 |  |  | 
    Kasper Johansen (10-06-2006) 
 
	
          | |  | Kommentar Fra : Kasper Johansen
 | 
 Dato :  10-06-06 00:40
 | 
 |  | Michael Rasmussen wrote:
 > Hvis ikke du anvender php i safe_mode, kan du gøre følgende:
 > // getSize.php
 > <?php
 >     $file = "test.gz";
 >     $output = shell_exec("sh getSize.sh $file");
 >     echo $output;
 > ?>
 >
 > // getSize.sh
 > #!/bin/sh
 >
 > PATH=/bin:/usr/bin
 >
 > gzip -l $1 | awk '/[0-9]/ {print $1}'
 >
 > exit 0
 >
 > [mir@loke:/tmp]$ php getSize.php
 > 90833
 
 Hej igen Michael.
 
 Tak for dit. Jeg prøver desværre at programmere et program der både er
 cross-platform, og jeg kan derfor desværre ikke bruge løsningen.
 
 Er det ikke muligt at gøre det på en PHP-only-måde?
 
 
 --
 Med venlig hilsen
 Kasper Johansen
 
 
 |  |  | 
     Bent Stigsen (10-06-2006) 
 
	
          | |  | Kommentar Fra : Bent Stigsen
 | 
 Dato :  10-06-06 03:02
 | 
 |  | 
 
            Kasper Johansen wrote:
 [snip]
 > Er det ikke muligt at gøre det på en PHP-only-måde?
 Tjo, hvis man gider. :)
 Kun lige testet på fil lavet af PHP's egne funktioner, men der er vel
 standard. Sålænge filen kun består af et dataset og den oprindelige fil
 ikke var større end 4GB, så skulle den være god nok.
 ref: http://www.rfc-archive.org/getrfc.php?rfc=1952 function gzfilesize($fname) {
   $fp = fopen($fname, "r");
   if (!$fp) return false;
   if (fseek($fp, -4, SEEK_END)) {
     $ISIZE = false;
   } else {
     $ISIZE = current(unpack("V", fread($fp, 4)));
   }
   fclose($fp);
   return $ISIZE;
 }
 Noget spændende du er ved at lave?
 /Bent
            
             |  |  | 
      Kasper Johansen (10-06-2006) 
 
	
          | |  | Kommentar Fra : Kasper Johansen
 | 
 Dato :  10-06-06 11:37
 | 
 |  | 
 
            Bent Stigsen wrote:
 > Noget spændende du er ved at lave?
 Det er et SQLite administrationsprogram. Jeg ved godt, at der allerede 
 er nogle derude, men jeg syntes, at det kunne være sjovt at lave sit eget :)
 gz-funktionerne bliver brugt til at skrive dumps af databaserne. 
 Programmet bliver som sagt skrevet som et program ved hjælp af PHP-GTK.
 Jeg har skrevet mere om det her (der er også links til source m.m.):
http://elg.lir.dk/?show=artikler_show&artikelid=50 -- 
 Med venlig hilsen
 Kasper Johansen
            
             |  |  | 
       Bent Stigsen (11-06-2006) 
 
	
          | |  | Kommentar Fra : Bent Stigsen
 | 
 Dato :  11-06-06 03:08
 | 
 |  | 
 
            Kasper Johansen wrote:
 > Bent Stigsen wrote:
 >> Noget spændende du er ved at lave?
 > 
 > Det er et SQLite administrationsprogram. Jeg ved godt, at der allerede
 > er nogle derude, men jeg syntes, at det kunne være sjovt at lave sit eget
 > :)
 > 
 > gz-funktionerne bliver brugt til at skrive dumps af databaserne.
 > Programmet bliver som sagt skrevet som et program ved hjælp af PHP-GTK.
 > 
 > Jeg har skrevet mere om det her (der er også links til source m.m.):
 > http://elg.lir.dk/?show=artikler_show&artikelid=50 Ja, det var egentlig det jeg fiskede efter. :) Var lidt nysgerrig på hvordan
 det (php-gtk) hang sammen, selvom jeg ikke plejer have tålmodighed til den
 slags gui-pilleri.
 Det ser ud til at blive meget godt.
 /Bent
            
             |  |  | 
   Michael Zedeler (10-06-2006) 
 
	
          | |  | Kommentar Fra : Michael Zedeler
 | 
 Dato :  10-06-06 00:51
 | 
 |  |  |  |  | 
 |  |