Voortgang van compressed files

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

10/03/2014 09:20:59
Quote Anchor link
Hallo medeleden,

Ik heb een vraag ik ben bezig met een scriptje die de files die ik in een dir heb naar een .gz te maken.

Dit werkt goed echter zou ik graag ook een voorgangsbalk willen zodat ik kan zien wat de status is.
Ik heb echter alleen geen idee hoe en waar ik moet beginnen.

Hier eerst het script

Niet op de namen letten deze veranderen nog zodat men weet wat het doet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
26
27
28
29
<?php
Class Showdirectorie {
    private $dir;
    private $test = array();
    
    public function __construct($dir) {
        $this->dir = $dir;
    }

    
    public function get_MainDir() {
        $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->dir));
            $this->test = $iterator;
            $this->do_Compress();
    }

    
    public function do_Compress() {
        foreach ($this->test as $key => $value) {
            $output = ".gz";
            $fp = gzopen($value.$output, 'w9');
            gzwrite($fp, file_get_contents($value));
            gzclose($fp);
            
            echo $value.' Has been compressed<br />';
        }
    }
 }

 $dir = new Showdirectorie("D:\NewVirtuos\Resclient");
 $dir->get_MainDir();
?>


Zoals je ziet gaat die compressen in de do_Compress method
ik zou graag willen zien dat die bezig is met een file en als die daarmee klaar is dat ik dan kan zien
bijvoorbeeld 1% enz. Hoe kan ik dat het beste doen.

Met vriendelijke groet,

Thomas de Vries
Gewijzigd op 10/03/2014 09:22:29 door Thomas de vries
 
PHP hulp

PHP hulp

21/12/2024 18:12:50
 
Erwin H

Erwin H

10/03/2014 10:09:56
Quote Anchor link
Ik ken geen manier om te bepalen hoever de voortgang is van de compressie van 1 bestand. In het geval dat je maar 1 bestand zal doen is de status dus altijd 0% of 100%. Doe je er meerdere dan kan je een teller in een database bijhouden. Je slaat aan het begin op hoeveel er gedaan moeten worden en zet de teller zelf op 0. Na elk bestand hoog je die teller op.
Vervolgens start je vanuit de browser een ajax call die simpelweg de stand van de teller en het aantal te doen ophaalt. Als je dat elke zoveel seconden doet kan je dus continu zien hoeveel er al gedaan is en met die informatie een progressbar maken.

Let alleen wel op dat je de sessie sluit als je die gebruikt. Zolang een request een sessie open heeft staan, kan een ander request de sessie niet openen en zal dus blijven wachten tot de sessie beschikbaar komt. Dat betekent dat als je in het request van de start van de compressie een sessie open houdt, je ajax calls nooit gegevens terugkrijgen tot nadat de compressie gestopt is (indien die ajax calls ook de sessie nodig hebben).
 
Thomas de vries

thomas de vries

10/03/2014 10:42:03
Quote Anchor link
Hi Erwin,

Het gaat hierbij altijd om meer dan 1 bestand. dus jou manier zou inderdaad kunnen werken.
Ik zal er eens na kijken wat ik kan doen met Ajax request.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.