Hallo,
Ik ben bezig met een scriptje wat xmlfeeds leest daaruit informatie uithaalt en een array opbouwt en die vervolgens in een database stopt. Om de gebruiker op de hoogte te houden van hoe snel het verwerken van een item gaat heb ik een teller er op gebouwd. Elke keer als er een item verwerkt is doe ik flush() en zou het de echo die er invoor komt op het scherm toveren, dit is echter niet het geval , hij buffert namelijk de flush een aantal keer en flusht hem dan.
Neem een kijkje naar me code:
de template:
Ik ben bezig met een scriptje wat xmlfeeds leest daaruit informatie uithaalt en een array opbouwt en die vervolgens in een database stopt. Om de gebruiker op de hoogte te houden van hoe snel het verwerken van een item gaat heb ik een teller er op gebouwd. Elke keer als er een item verwerkt is doe ik flush() en zou het de echo die er invoor komt op het scherm toveren, dit is echter niet het geval , hij buffert namelijk de flush een aantal keer en flusht hem dan.
Neem een kijkje naar me 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| //files is een array waarvan de value de bestandsnaam bevat foreach($files AS $k => $v) { //lees alle lines in van het bestand en plaats ze in een array $lines = file($this->pathSaveID . $v); //maak een nieuw object aan om een item te verwerken $item = new ItemInfo(); //doorloop alle lines een voor een foreach($lines AS $line) { $line = trim($line); if (empty($line)) continue; //bekijk of het record al bestaat if ($sql->RecordExists('items', 'itemID', $line, $sql) != 0) { continue; } // end if //start timer $b = (array_sum(explode(" ", microtime()))); //verzamel informatie , bouw een array, maak een query en zet ze in de database. $sql->query($this->CreateInsertQuery("items","itemID",$line,$item->createItemArray($line))); $b = (array_sum(explode(" ", microtime())) - $b); //gooi de array in het object leeg $item->clearItemArray(); //het aantal items gedaan $items++; //totale tijd versterken $ttime += $b; //schuif een element van de array af array_shift($timesAverage); //zet er weer eentje in voor het gemiddelde $timesAverage[] = $b; //tel het gemiddelde $average = array_sum($timesAverage) / count($timesAverage); $oTime = $ttime / $items * ($aItems - $items); $time = $average * ($aItems - $items); //assign de waardes in de template. $tpl->assign("file",$v); $tpl->assign("timee",$this->filterTime($ttime)); $tpl->assign("timeor",$this->filterTime($oTime)); $tpl->assign("timer",(($items < 20) ? 'Calculating...' : $this->filterTime($time))); $tpl->assign("itemsr",($aItems - $items)); $tpl->assign("line",$line); $tpl->assign("proctime",round($b, 6)); //echo de template echo $tpl->parse("flush"); //flush flush(); } } |
de template:
HTML:
1
2
3
4
5
6
7
| <script> <!-- document.getElementById('time').innerHTML = 'Busy with: {file} Time elapsed: {timee} Overall time remaining: {timeor} Current time remaining: {timer} Items remaining: {itemsr}'; document.getElementById('textbox').value = "Item: {line} succesfully inserted ({proctime} sec)\n" + document.getElementById('textbox').value; --> </script> |