garry: nach ?action send vom formular wird text nicht gleich angezeigt

Hi!
Habe folgendes problem, dass nach senden an mein php script die aktion (z.b. do) erst angezeigt wird wenn die schleife fertig ist!
Starte ich aber den Script sofort mit tt.php?action=do funktionierts!
was mache ich falsch?

danke
greetz
garry

<?php
echo "test";
echo "<form method=POST action=tt.php?action=do>";
echo "<input type=Submit value='run'></form>";

if($action=="do")
 {
 for($i=0;$i<10;$i++)
  {
     echo "$i";
                        flush();
   sleep(1);
  }
 }
?>

  1. Hi,

    Habe folgendes problem, dass nach senden an mein php script die aktion (z.b. do) erst angezeigt wird wenn die schleife fertig ist!

    willkommen in der wunderbaren Welt von HTTP.

    Starte ich aber den Script sofort mit tt.php?action=do funktionierts!

    Was bezeichnest Du als "sofort starten"?

    was mache ich falsch?

    Wollen mal sehen:

    echo "<form method=POST action=tt.php?action=do>";

    • Du vermischst POST und GET, was mindestens stilistisch suboptimal ist.
    • Du unterlässt es, einen Attributwert in Anführungszeichen zu setzen, der in Anführungszeichen stehen _muss_.

    if($action=="do")

    • Du vergisst die Deklaration und Initialisierung verwendeter Variablen.
    • Du verlässt Dich auf einen sicherheitskritischen Mechanismus, welcher den globalen Namespace mit Variablen zuvor unbekannten Namens und nachher unbekannter Quelle füllt.

    flush();
       sleep(1);

    • Du missbrauchst HTTP für Aktionen, mit denen unterschiedlichste Systeme Probleme bekommen können - vom Server über Proxies bis hin zum Client.
    • Du provozierst bewusst lange Programmausführungszeiten.

    HTH

    Cheatah

    1. ja das kann sein dass dies lange zeit benötigt aber wie kann ich dies elegant und schnell lösen?

      1. Hi,

        ja das kann sein dass dies lange zeit benötigt aber wie kann ich dies elegant und schnell lösen?

        unterlasse den HTTP-Missbrauch, verzichte auf flush() und sleep(). Wenn Du eine interaktive Applikation erstellen willst, oder etwas mit verzögerter Ausgabe, dann schreibe ein Java-Applet oder irgendwas, das nicht im Browser läuft.

        Cheatah

    2. hi!

      das kann sein, aber wie kann man dies elegent lösen ?