[PHP 5.0.3] ob_end_flush() en flush()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Ik gebruik ob_end_flush() icm. flush() om een progressie te laten zien in mijn php scripts.
Dit heeft voorheen ook altijd prima gewerkt. Sinds ik echter mijn server van PHP versie 5.0.3 heb voorzien, werkt eea. niet meer. Een voorbeeldje:
PHP:
1
2
3
4
5
6
7
ob_end_flush();

echo "Test1\n";
flush();
sleep(3);

echo "Test2\n";

Dit moet Test1 printen en gelijk laten zien, 3 secs. wachten, en Test2 laten zien.
Mijn colocatie machine met PHP4 doet dit ook. PHP 5.0.2 heeft dit ook correct gedaan, echter nu werkt het niet meer.
Ik begin erg sterk te denken aan een bug, maar voordat ik hem submit (via het niet te bereiken bugs.php.net) vroeg ik me af of het bij iemand anders met php 5.0.3 wel werkt of dat iemand nog briljante ideeën heeft B)

andere php.ini heb ik al geprobeerd, ook met ob_end_clean, ipv. ob_end_flush werkt het niet...

[ Voor 3% gewijzigd door RupS op 08-01-2005 23:18 ]


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 17:19

Snow_King

Konijn is stoer!

Voor jou even getest: http://zooi.widodh.nl/php5-flush.php5

phpinfo: http://loadbalancer.pcextreme.nl/phpinfo.php5

Kan dus wel eens een bug zijn.

Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Dank voor het testen, het ligt dus niet zonder meer aan PHP...
Ik heb inmiddels Kritz zover gekregen het ook te testen onder FreeBSD, misschien dat het daar aan ligt, maar bij hem werkt het dus ook prima... :|

Ik heb PHP helemaal gestript zonder extensions, met dezelfde instellingen, maar dan NOG werkt het niet. Ik heb PHP al opnieuw gecompileerd, maar dat zijn noodgrepen waarvan ik me niet voor kan stellen dat het de oorzaak is (heeft ook geen zak geholpen :+ )

Ik weet even niet meer wat ik nog kan proberen om het werkende te krijgen, het heeft ook eigenlijk niks meer met P&W te maken...

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Oops, verkeerd gelezen.

[ Voor 96% gewijzigd door Soultaker op 09-01-2005 00:18 ]


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 17:19

Snow_King

Konijn is stoer!

RupS schreef op zaterdag 08 januari 2005 @ 23:47:
Dank voor het testen, het ligt dus niet zonder meer aan PHP...
Ik heb inmiddels Kritz zover gekregen het ook te testen onder FreeBSD, misschien dat het daar aan ligt, maar bij hem werkt het dus ook prima... :|

Ik heb PHP helemaal gestript zonder extensions, met dezelfde instellingen, maar dan NOG werkt het niet. Ik heb PHP al opnieuw gecompileerd, maar dat zijn noodgrepen waarvan ik me niet voor kan stellen dat het de oorzaak is (heeft ook geen zak geholpen :+ )

Ik weet even niet meer wat ik nog kan proberen om het werkende te krijgen, het heeft ook eigenlijk niks meer met P&W te maken...
Misschien nog handig om te weten, dat systeem waar widodh.nl op draait, draait Debian 3.1.

Acties:
  • 0 Henk 'm!

Verwijderd

Test het met telnet of een andere client, stuur een HTTP request, en je ziet dat het gewoon werkt.

Bedenk dat het HTTP protocol clients niets afdwingt over wanneer de gegeven informatie verwerkt wordt. En het geeft ook niet aan of er al iets moet gebeuren als nog niet alles binnen is.

Het hoeft ook helemaal niet te kunnen werken. Verder kun je in de manual lezen dat het op Windows servers niet altijd even fijn werkt, en dat Internet Explorer minimaal eerst 512 bytes wil ontvangen voor het iets gaat doen. Kennelijk hangt er een of andere bufferende stream reader aan, of iets vergelijkbaars. Dat mag allemaal.

Acties:
  • 0 Henk 'm!

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 17-07 14:45
Verwijderd schreef op zondag 09 januari 2005 @ 00:57:
Test het met telnet of een andere client, stuur een HTTP request, en je ziet dat het gewoon werkt.

Bedenk dat het HTTP protocol clients niets afdwingt over wanneer de gegeven informatie verwerkt wordt. En het geeft ook niet aan of er al iets moet gebeuren als nog niet alles binnen is.

Het hoeft ook helemaal niet te kunnen werken. Verder kun je in de manual lezen dat het op Windows servers niet altijd even fijn werkt, en dat Internet Explorer minimaal eerst 512 bytes wil ontvangen voor het iets gaat doen. Kennelijk hangt er een of andere bufferende stream reader aan, of iets vergelijkbaars. Dat mag allemaal.
Je hebt natuurlijk helemaal gelijk. Het is niets meer dan een "suggestie" aan de client. Maar dat neemt toch niet weg dat het alleen vanaf mijn server niet werkt. In Opera, Firefox of IE niet...terwijl het dat wel altijd heeft gedaan. Met deze zelfde clients werkt het dus wel vanaf de webservers van Snow_King en van Kritz.

Vandaar mijn verwarring... Maar ik ga wel verder zoeken wat nou de verschillen zijn in de http headers van de requests, het moet toch ergens vandaan komen :)

Acties:
  • 0 Henk 'm!

  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 17:21
ik had dit probleem ook, en ergens op php.net (vraag niet waar) kwam ik tegen dat je en

flush(); en ob_flush(); moet gebruiken, hiermee zou het wel moeten werken
Pagina: 1