login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Progress Indicators (Opgelost)

Offline larssy1 - 03/07/2012 08:56 (laatste wijziging 03/07/2012 08:59)
Avatar van larssy1MySQL beginner Beste leden,

Ik ben op het moment bezig met een kleine UI pagina voor een alternatief voor mijn cronjob.

Gister had ik een paar problemen maar met hulp van Erik kwam ik er al snel achter dat ik ob_end_flush() en flush() moest gebruiken om ondertussen de voortgang te kunnen tonen op het scherm.

Nu is het echter zo dat ik me te bedenken kom of de methode die ik handhaaf wel de juiste is en hoe ik het werkend zou kunnen maken.
Ikzelf programmeer altijd in OO en gebruik dan ook classes voor mijn code.
In de class voor deze specifieke module zit een array met ongeveerd 30 landen.
Uit elk land zal hij een XML moeten ophalen en verwerken.
Nu is mijn vraag, hoe toon ik de voortgang van deze items.
Op het moment heb ik het in de cronjob, maar dat is zo goed als per onderdeel, niet per land.
Is het mogelijk om simpel weg een paar values te maken in de klasse:
  1. $part1Completed = false;
  2. $part1Progress = 0;
  3. $part2Completed = false;
  4. $part2Progress = 0;


En dan gewoon met getters de waardes opvraag?

  1. public function getProgressPart1() {
  2. return $this->part1Progress;
  3. }


En omdat de waarde blijft veranderen, wordt het dan aangeraden om in de algemene UI code te doen van:

  1. foreach ( each part ) {
  2. $inProgress = false;
  3. while ($myClass->getProgressPart1() < 100) {
  4. if (!$inProgress) {
  5. $myClass->getData();
  6. }
  7. echo $myClass->getProgressPart1();
  8. flush();
  9. }
  10. }


Raden jullie mij aan het op deze manier te doen?

Daarnaast lijkt de ob_end_flush / flush niet altijd goed te werken en blijft de pagina alsnog maar laden inplaats van de output tonen.

Graag hoor ik jullie mening.

Mvgr,
Lars

4 antwoorden

Gesponsorde links
Offline Martijn - 03/07/2012 09:58 (laatste wijziging 03/07/2012 10:00)
Avatar van Martijn Crew PHP Ik raad je aan eens rond te zoeken naar andere progressie indicatoren Er zijn hele nette voorbeelden die je veel meer info gaan geven dan dat wij hier kunnen

edit: Ik ben sowieso niet een voorstander van OB_ functies, als je juist werkt is Output Buffering helemaal niet nodig 
Offline larssy1 - 03/07/2012 11:34 (laatste wijziging 03/07/2012 13:24)
Avatar van larssy1 MySQL beginner Ik heb zo snel geen progressie indicatoren kunnen vinden voor het gene dat ik wil.

Tevens ook de vraag, hoe zou ik de voortgang van het hele proces kunnen bekijken, wat bestaat uit het ophalen van 30 xml bestanden.

Nu is het dat het gewoon gebeurt, en ik kan alleen kijken wanneer het klaar is, maar niet de tussen stand..

http://www.unre...eviews.php
---------------
To zover heb ik nu dit:

http://www.unre...eviews.php

Ben echter bang dat ik hieraan niks heb, het aantal % is bepaald door de klasse zelf, en wordt niet terug gestuurd aan het php bestand :[
Offline Martijn - 03/07/2012 14:35
Avatar van Martijn Crew PHP Je weet dat php serverside is neem ik aan.. Oftewel PHP kan NOOIT je scherm updaten.

Je kunnen overwegen dat je dit bestand oproept met bv jQuery ajax request, een tekstje neerzet met "bezig", en dan onsuccess die tekst vervangen door "Klaar!".

Gaat wel voor je hele lijst in 1x, maar als je script zo zwaar blijft als het nu is, zou ik daar zeker niet de moeite voor gaan nemen om dat per stuk te doen, dat kost je meer overhead dan de daadwerkelijk actie.
Offline larssy1 - 03/07/2012 14:42 (laatste wijziging 03/07/2012 14:56)
Avatar van larssy1 MySQL beginner Ik weet dat PHP serverside is, en ik weet dat het ook niet kan, dat is de reden dat ik ook hier terecht kwam met deze vraag.

Het beste zou zijn als de lijst zich gaat uitbreiden aangezien dat betekent dat ik weer applicaties heb gemaakt 

Aangezien zoals je zei, het meer zou vergen dan dat t eigenlijk is, zou je het aanbevelen om met dit huidige mini-projectje door te gaan of loont het zich niet voor het uiteindelijke doel?

of het gewoon te minimaliseren tot het totaal, en niet per stap.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.214s