|
| 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 |
| | |
|
|