Voortgang van compressed files
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)
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
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();
?>
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
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).
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.