Kann PHP warten ?

Don Stefano

Erfahrenes Mitglied
Hallo zusammen,

weiß jemand von euch ob und wie es möglich ist in php eine kurze Verzögerung einzubauen ?

Ich will nicht automatisch nach ein paar Sekunden eine neue Seite laden sondern z.B. einen Satz ausgeben, dann 1 Sek. warten, dann den zweiten Satz ausgeben, dann vielleicht 3 Sekunden warten, dann den nächsten ...

Gibt es für solche Zwecke eine Art "Wait oder Delay" Funktion ?

Danke
Don
 
Leider funktioniert das nicht wie ich es mir vorgestellt habe.

Bsp:
Ich klicke einen Link zu einer php Seite an. Auf dieser Seite soll nun mit dem echo Befehl ein Satz ausgegeben werden, dann habe ich mit
PHP:
sleep (3);
versucht, 3 Sekunden zu warten, bevor der nächste Satz ausgegeben wird (bzw. die nächste Variable).

Was aber passiert: Beim klicken des Links dauert es nun 3 Sekunden bis sich die Datei öffnet und dann wird doch alles sofort ausgegeben. Und das obwohl der Sleep Befehl zwischen den einzelnen Ausgaben steht und nicht am Anfang der Datei.

Wie macht man es, dass eine Pause zwischen den Ausgaben innerhalb des Skripts gemacht wird ? Darum geht es mir.
 
Sven Petruschke ich habe das mal getestet was du da gepostet hast da ich mich bisher nie für die sleep(); funktion Intressiert hatte.
mein Ergebnis, er gibt nicht alle 3Sekunden was aus (jedenfals sieht man es im Browser nicht), sondern es wird alles ausgegeben.
In deinem script beträgt die Sleep zeit Insgesamt 6 Sekunden, welche man auch Warten muss bis im Browser Überhaupt etwas zu sehen ist.
:rolleyes:
 
Ist ja auch logisch! php Ist nun mal eine Serverseitige Sprache! Es muss halt der ganze Text auf einmal übertragen werden und dann via JavaScript Stück für Stück ausgegeben werden oder die Seite muss jedes mal neu geladen werden, sodass vom Server immer der nächste Satz geschickt wird.
 
@ Mathias

Vielen Dank. Das klappt in der Tat. Nur leider gibt es nun ein neues Problem was ich nicht verstehe und was damit in Zusammenhang steht.

Ich hatte eigentlich vor per
PHP:
header('Location: index2.php') ;
nach der verzögerten Ausgabe auf eine andere Seite weiterzuleiten.

Dies klappt nun nicht mehr. Hier der kurze Code:

PHP:
//Im folgenden wird Code mit Verzoegerung ausgegeben!
    30 ob_end_flush();
    31
    32 echo "Vielen Dank f&uuml;r Ihre Teilnahme!<br>";
    33 flush();
    34
    35 sleep(2);
    36
    37 echo "Dieser Test ist beendet.<br>";
    38 flush();
    39
    40 sleep(2);
    41
    42 echo "Sie werden nun wieder zur Hauptseite geleitet.<br>";
    43 flush();
    44
    45 sleep(2);
    46 
    47
    48 //Weiterleitung zurueck zur Starseite
    49 header('Location: index2.php') ;
    50
    51 ?>

Und hier die Ausgabe mit Fehlermeldungen...

Code:
Vielen Dank für Ihre Teilnahme!
   Dieser Test ist beendet.
   Sie werden nun wieder zur Hauptseite geleitet.
   
    Warning:  Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\don4\ende.php:30) in C:\xampp\htdocs\don4\ende.php on line 49


Ich habe bereits in die FAQ gesehen, da dort ein Hinweis steht auf den Fehler "cannot add header information", der ja so ähnlich ist.

Aber das hilft mir auch nicht weiter, genausowenig wie der Hinweis auf ob_start() in Verbindung mit ob_end_flush().


Hat noch jemand eine Idee, wie es trotzdem klappen könnte mit dem "header" Befehl ?

Danke
Don
 
Das kann so nicht gehen. Mach dich mal mit der Bedeutung der HTTP-Header vertraut, dann wirst du verstehen, warum deine Lösung nicht funktionieren kann.
 
Zurück