Toon posts:

php data in blokjes opsturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoi,

Ik heb een php-script geschreven wat meerdere sql query's moet uitvoeren, sommige van die query's kunnen wel enkele minuten duren. Kan ik tijdens het uitvoeren vast een gedeelte van de data opsturen, dus dat de gebruiker in zijn browser te zien krijgt "bezig met query x"? Nu moet ik (de gebruiker) eerst wachten opdat het hele script uitgevoerd is voordat het resultaat wordt getoond.

  • Grum
  • Registratie: Juni 2001
  • Niet online
www.php.net/flush

edit:

1/
ghehe ... snel je post editen he whoami! :P
naja ik vergeef et je als je er een groot glimmend slot op knalt ;)
2/
TimD: dat staat dus ook al op die page .. en een forloop gebruiken om 256 spaties te printen is wat .. errr overkill ? zeker als je str_repeat hebt.

[ Voor 0% gewijzigd door Grum op 12-08-2002 15:36 . Reden: prrrrrrrt ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:48
.

https://fgheysels.github.io/


Verwijderd

Eerst je buffer vullen met 256 spaties en die eerst flushen.. de meeste browser beginnen pas met tonen van een pagina als er 256 karakters zijn binnen gekomen..

PHP:
1
2
3
for($i = 0; $i < 256; $i++)
  echo " ";
flush();

Verwijderd

Topicstarter
thanks, dat zocht ik, wist niet onder welke naam ik zoiets kon vinden.

helaas, het werkt niet helemaal. Het is vrij veel data die verstuurd moet worden (soms wel een paar duizend regels) en daar krijg ik maar gedeeltes van te zien. Met een sniffer lijkt het erop dat apache aan het bufferen is.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Verwijderd schreef op 12 augustus 2002 @ 15:58:
thanks, dat zocht ik, wist niet onder welke naam ik zoiets kon vinden.

helaas, het werkt niet helemaal. Het is vrij veel data die verstuurd moet worden (soms wel een paar duizend regels) en daar krijg ik maar gedeeltes van te zien. Met een sniffer lijkt het erop dat apache aan het bufferen is.
Het zijn toch geen tabelen want met tabelen gaat het vaak fout als de data niet in één keer komt, dan moet namelijk alle data er zijn voor de tabel juist wordt opgebouwd.

Verwijderd

Topicstarter
Het zijn toch geen tabelen want met tabelen gaat het vaak fout als de data niet in één keer komt, dan moet namelijk alle data er zijn voor de tabel juist wordt opgebouwd.
nee, het is gewoon tekst, niet eens html ofzo.

Echt belangrijk is het niet want de data wordt toch door een delphi-app uitgelezen. Voor het debuggen zou het echter wel prettig zijn als ik weet waar ie mee bezig is, dat doe ik gewoon door met een browser de data ophalen.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Verwijderd schreef op 12 augustus 2002 @ 16:06:
[...]
nee, het is gewoon tekst, niet eens html ofzo.

Echt belangrijk is het niet want de data wordt toch door een delphi-app uitgelezen. Voor het debuggen zou het echter wel prettig zijn als ik weet waar ie mee bezig is, dat doe ik gewoon door met een browser de data ophalen.
Wanneer doe je die flushes toch wel pas als je klaar bent met de query, anders misschien wat code laten zien :S

Of zelf debuggen door te echoën zodat je kan zien waar hij stopt met outputten

  • Joror
  • Registratie: Augustus 2001
  • Laatst online: 11-03-2017

Joror

the eternal lurker

Verwijderd schreef op 12 augustus 2002 @ 15:32:
Eerst je buffer vullen met 256 spaties en die eerst flushen.. de meeste browser beginnen pas met tonen van een pagina als er 256 karakters zijn binnen gekomen..

PHP:
1
2
3
for($i = 0; $i < 256; $i++)
  echo " ";
flush();
Ipv de loop kan je beter een andere (erg nutteloze) phpfunctie gebruiken: ;)
PHP:
1
2
echo str_repeat(' ',256);
flush();

nada aka zilch, formerly known as zip


  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Joror schreef op 12 augustus 2002 @ 16:51:
[...]

Ipv de loop kan je beter een andere (erg nutteloze) phpfunctie gebruiken: ;)
PHP:
1
2
echo str_repeat(' ',256);
flush();
Wat al heel vroeg door Grum werd opgemerkt.

offtopic:
Wat een activiteit de laatste tijd en dat voor een lurker ;)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Nog steeds geen slotje :?

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Neej, het topic niveau is een beetje gestegen naar een flush werkt niet zoals het hoort, of zoals de topicstarter denkt *nofi* dat het werkt.

Verwijderd

Topicstarter
ff wat voorbeeld code, ik kan niet het orginele script posten, beetje veel te groot en lastig:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  echo("<PRE>\n");
  echo(date("l \\t\h\e jS") . "\n");

  echo(str_repeat(' ', 256) . "\n");
  flush();

  sleep(2);

  echo(date("l \\t\h\e jS") . "\n");
  echo("</pre>\n");
?>



Als ik bovenstaande code uitvoer krijg ik de output van regel 3 en regel 10 na 2 seconden te zien, niet eerst regel 3, dan 2 sec. wachten en dan regel 10 zoals ik graag zou willen.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Uhm, werkt dit wel, zow nee.
Hmmz, dan zou het weleens aan je conf. kunnen liggen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  echo("<PRE>\n");
  echo(str_repeat(' ', 256) . "\n");
  flush();
  
  echo(date("l \\t\h\e jS") . "\n");
  flush();


  sleep(2);

  echo(date("l \\t\h\e jS") . "\n");
  echo("</pre>\n");
?>

Verwijderd

Topicstarter
Uhm, werkt dit wel, zow nee.
Hmmz, dan zou het weleens aan je conf. kunnen liggen.
OK, getest en werkt niet. Ik ga wel ff php tunen.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Verwijderd schreef op 12 augustus 2002 @ 19:11:
[...]
OK, getest en werkt niet. Ik ga wel ff php tunen.
Het werkt idd niet, misschien zijn er andere die het ook mee gemaakt en weten wat er aan te doen valt :S

Verwijderd

Topicstarter
ff mijn Duits opgepoetst met wat zoeken in google en gevonden, in php.ini:
van "output_buffering = 4096" (default) naar "output_buffering = Off"

Check bijv hier. Allemaal bedankt voor het helpen, kan ik eindelijk prettig debuggen :)

[ Voor 0% gewijzigd door Verwijderd op 12-08-2002 19:36 . Reden: url van google erbij ]

Pagina: 1