garry: warum funktioniert das nicht ?

@ all ?

anbei ein auszug aus meinem programm .
starte ich nun den script und drücke run -> sende nun mit einem formular mit post: "test.php?Action=do" dann sollte eigentlich gleich danach die Zahlen 0-9 erscheinen im Abstand von ca. 1 Sekunde. Jedoch erscheinen die Zahlen erst nach Ablauf der ganzen Schleife! Starte ich den Script direkt im Browser mit "test.php?Action=do" - viola funktionierts! Warum? Ich muss aber diese Action von einem Formular aus starten und genau sehen bei welcher zahl ich mich gerade befinde - aber wie?

Wer kann mir einen Tip geben oder sagen wie ich dies Lösen kann!

<?php
echo "test";
echo "<form method='post' action='test.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. vielleicht liegt das daran, dass der praser den code so verarbeitet, dass er eines nach dem anderen ausführt und so muss halt die for-schlaufe warten, bis die formeingabe verarbeitet wurde (vielleicht wird sie in dieser zeit auch abgearbeitet, aber noch nicht ausgegeben)

    wenn du es ohne formeingabe startest, dann kann es die for-schleife sofort ausführen

    1. so leute

      danke für eure hilfe aber leider funktioniert es auch mit hidden fields nicht!

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

      flush();

      switch ($cmd) {
          case "do":
       {
       for($i=0;$i<10;$i++)
        {
           echo "$i";
           flush();
         sleep(1);
        }
       }
      }
      ?>

      erst nach ablauf der zeit zeigt er mir alles an, jedoch refresh ich das ganze, dann funktionierts!
      Gibts noch andere Lösungen ?

  2. Hallo,

    bin mir nicht sicher, ob es darin liegt, aber sowas:

    echo "<form method='post' action='test.php?action=do'>";

    gibt's eigentlich nicht. Was spricht dagegen zu übermittelnde Daten ganz normal per Formular (hidden-Field) zu übermitteln?

    Grüße aus Würzburg
    Julian

    1. Hi

      bin mir nicht sicher, ob es darin liegt

      ja, hatte ein ganz ähliches problem und diese vorgehensweise machte probleme

      Daten ganz normal per Formular (hidden-Field) zu übermitteln?

      Das funzt im gegensatz zur lösung oben.

      gruss
      michel gelin

  3. Hi!
    Ich hatte mal gehört, das flush() nicht immer so arbeitete, wie man es gerne hätte , da zwischen dem Script und dem Absenden an den Browser noch irgendwelche Caching-Mechanismen greifen, die nicht unbedingt auf flush() hören. Daher steht im manual ja auch "wird _versucht_...".
    Ich weuiß nicht ob sich das evtl hier auswirkt. Mich wundert nuc das die Version funktioniert?!

    Aber was willst Du genau damit erreichen? Warum machst DU das nicht mit Javascript? Das dürfte deutlich genauer sein und besser funktionieren!

    Grüße
    Andreas