RFZ: Warteschleife / Synchronisation

Beitrag lesen

Nun zu meiner Frage:
Wie kann ich das am saubersten realisieren?
Mir schwebt da eine while schleife vor, die Seite sollte aber schon ausgeführt werden. Da stehe ich irgendwie auf dem Schlauch.

Auch wenn es andere Möglichkeiten gibt, beispielsweise das überprüfen mittels JavaScript, ist deine Idee vom Prinzip her gut, da sie ohne JavaScript auskommen würde.

Die Idee wäre, du lässt dein Script erst einmal die Warteseite ausgeben, ohne schließende body und html Tags. Nach dieser Ausgabe stellst du mittels flush() sicher, dass alle Daten aus dem Ausgabepuffer von PHP an den Browser geschickt wurden. Jeder Browser sollte jetzt die Seite anzeigen, auch wenn sie noch nicht vollständig ist.
Dein Script geht nun in die Warteschleife, sendet dabei aber möglichst alle paar Sekunden ein Leerzeichen oder einen Zeilenumbruch (mit flush() erzwingen) damit der Browser die Verbindung nicht trennt.
Wenn deine Wartebedingung erfüllt ist, gibst du einen Link zur nächsten Seite (für Leute ohne JS), sowie ein JavaScript für eine automatische Weiterleitung aus, dann beendest du dein Script.

Vergisst nicht, mit set_time_limit() die maximale Ausführungszeit deines Skripts zu verlängern.

Du solltest ausserdem eine Behandlung für den Fall einbauen, dass mehr als X Personen diese URL aufrufen, denn dein Skript erzeugt sonst zuviele parallel gestartete Prozesse.

Danke
mfg
xastax

Gruß,
Andreas