Avatar billede amix Nybegynder
12. februar 2004 - 18:03 Der er 1 kommentar og
1 løsning

PHP og gunzip

Hejsa

Jeg har et script som skal extracte nogle gunzip filer. Dog oplever jeg problemer med dette script - mere om det senere. På Windows og Linux er problemet der ikke - dette kunne være noget med php opsætningen, apache el.lign.

Altså, denne funktion er en del af en klasse:
    //Extract the downloaded file
    function extract()
    {
        echo "\n\nExtracting the gunzipped file...";
       
        //Open the downloaded gunzip file
        if(!($file = gzopen($this->filename.".u8.gz","r")))
        {
            die("I/O error! Could not open the downloaded file!");
        }
       
               
        //Open the file we write to
        if(!$openfile = fopen($this->filename,'a'))
        {
            die("Cannot open the file (".$this->filename.")");
        }
       
        //Write the data

        if(!fwrite($openfile, gzread($file,300000000)))
        {
            die("Cannot write to file ".$this->filename."");
        }
       
        fclose ($openfile);
        gzclose ($file);
        echo "\n\n\n ".strtoupper($this->filename).".U8.GZ WAS SUCCESSFUL EXTRACTED! \n Filename: ".$this->filename."\n\n";
    }

Den virker fint! Dog er problemet at jeg pakker nogle MEGET store filer ud (fra 50 MB til 250 MB). Hvis man betragter denne linie:
    if(!fwrite($openfile, gzread($file,300000000)))
Så kan man se at den udpakker hele gunzip filen på en gang - dette er ikke særligt smart når man pakker 50 MB eller 250 MB filer!

Nu er det noget tid siden, men jeg mener jeg havde forsøgt mig at udpakke gunzip filerne "on the fly" - dvs. den tager småbidder og udpakker dem. Dog kunne jeg ikke lige få det til at virke. Er der nogen der har nogle gode forslag/løsninger på problematikken?

//amix
Avatar billede amix Nybegynder
12. februar 2004 - 18:04 #1
Der er nogle brugere som har klaget over udpaknings funktionen - og jeg har selv haft problemer på min iBook (som kører Mac OS X).
Avatar billede amix Nybegynder
13. februar 2004 - 00:13 #2
Har selv løst problemet :]

Hvis der er nogen som er interesseret:
    //Extract the downloaded file
    function extract()
    {
        echo "\n\nExtracting the gunzipped file...";
       
        //Open the downloaded gunzip file
        if(!($file = gzopen($this->filename.".u8.gz","r")))
        {
            die('I/O error! Could not open the downloaded file!');
        }
       
               
        //Open the file we write to
        if(!$openfile = fopen($this->filename,'a'))
        {
            die('Cannot open the file ('.$this->filename.')');
        }
       
        //Write the data
        while (!gzeof($file))
        {
            $buff = gzgets($file, 4096) ;
            fputs($openfile, $buff) ;
        }                   
       
        fclose ($openfile);
        gzclose ($file);
        echo "\n\n\n ".strtoupper($this->filename).".U8.GZ WAS SUCCESSFUL EXTRACTED! \n Filename: ".$this->filename."\n\n";
    }
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