[PHP] ob_end_flush miraculeus probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 20-09 02:48
Ik heb problemen met de functie, ob_end_flush, ob_flush en flush

Deze functies sturen de gebufferde output (in een php script) naar de client.
Alle 3 werken ze niet.

Ik heb in mijn index file ob_start staan omdat ik een aantal pagina's include waar cookies en sessies worden gemaakt e.d.

Nu zit er tussen 1 van die geinclude pagina's een while loopje die verbinding maakt met een SMS server. en omdat het verbinden en verzenden per sms bericht 2 of 3 seconden duurt leek het me handig om alvast de status van een bericht te versturen als het bericht succesvol of juist niet succesvol is verzonden.

Als ik geen van die 3 functies gebruik werkt het zoals verwacht. De output wordt eerst gebufferd en pas als het script is geeindigd wordt de output verzonden.
Als ik een van de 3 functies in mijn script zet dan worden de 1e 117 (HTML) regels verstuurd naar de browser en vervolgens gaat ie weer bufferen.

Het vreemde is dat in die 117 regels het menu zit, dus niet een deel van de while loop of dergelijke.

Ik hoop dit een beetje duidelijk is. en dat iemand mij kan helpen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Het probleem zit waarschijnlijk niet in je code, maar in je browser. Sommige browsers beginnen pas met het tekenen van een node, als de sluittag daarvan ook binnen is. Druk je de informatie dus af binnen een <div>, dan laat je browser niets zien totdat de </div> binnen is. Bekijk de broncode eens tijdens het laden van de pagina, dan zie je vanzelf of dit het geval is bij jou. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 20-09 02:48
Nee, dat is niet het geval:

Een stukje broncode:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                </tr><tr>
                    <td>
                        <a href="?pid=phpmyadmin/main">[img]"blocks/phpmyadmin/images/menu_phpmyadmin.gif"></a>
                    </td>
                    <td>
                        <a[/img]PhpMyAdmin</a>
                    </td>
                </tr><tr>
                    <td>
                        <a href="?pid=promo/main">[img]"blocks/promo/images/menu_promo.gif"></a>
                    </td>
                    <td>
                        <a[/img]Promo</a>
                    </td>
                </tr><tr>
                    <td>
                        <a href="?pid=sms/main">[img]"blocks/sms/images/menu_sms.gif"></a>
                    </td>
                    <td[/img]
                        <a href="?

Het script stopt telkens op dezelfde plaats.

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Tja en als je dan de tabel niet afsluit is het lastig voor de browser om te bepalen hoe die er uit moet gaan zien. Gebruik dan dus gewoon een iframe om de status terug te geven of maak een soort remote scripting update die controlleerd hoe het er mee staat ;)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 20-09 02:48
Ik heb liever dat die functie gewoon goed werkt dan het te moeten oplossen met een workaround. Ik vind dit niet netjes.

Als ik het menu kleiner maak. Dan stopt het output bufferen ook ergens midden op een pagina...

Ook als ik elke 3 seconde naar de broncode kijk dan is de output nog hetzelfde.

[ Voor 6% gewijzigd door GewoonNico op 02-11-2004 20:07 ]


Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Als je zeker wilt zijn of het aan je browser of aan je scriptje ligt kun je proberen:

telnet www.jouwserver.nl 80

en na het verbinden:

GET /scriptje.php HTTP/1.0
Host: www.jouwserver.nl

enter, enter.

Nu zie je precies wat je browser zou binnenkrijgen, zodat je kunt zien waar de data stopt...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

partypas schreef op 02 november 2004 @ 20:07:
Ik heb liever dat die functie gewoon goed werkt dan het te moeten oplossen met een workaround. Ik vind dit niet netjes.

Als ik het menu kleiner maak. Dan stopt het output bufferen ook ergens midden op een pagina...

Ook als ik elke 3 seconde naar de broncode kijk dan is de output nog hetzelfde.
Toch komt het gewoon omdat je browser er niet mee overweg wil en kan. Ben je het er niet mee eens, dan kun je altijd je eigen browser maken. :P

Je kan ook wat anders verzinnen, maar als je per se met PHP alleen wil werken, dan zit je vast aan die buffer volgens mij.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 20-09 02:48
Het script is voor scholen en cafe's dus een eigen browser maken zit er ook niet in.

Ik zal maar wat anders moeten bedenken. Misschien wordt het toch een IFrame

[ Voor 87% gewijzigd door GewoonNico op 02-11-2004 20:52 ]

Pagina: 1