Sven Rautenberg: Schleife in Schleife?

Beitrag lesen

Hi Sven

Ganz lieb aber das bringt auch nix.
Der muss alle 60 sek was ausgeben
(damit der Browser den Stream nicht abbricht)

Ich habe mir mal ein Perl-Skript geschrieben, welches per Modem online geht. Dazu habe ich auch einen Fortschrittsbalken gebastelt, der solange fortschreitet, wie das Modem wählt, synchronisiert, verbindet und den PPP-Link herstellt

Folgender Script-Teil hat das realisiert:

$tout = time + 120;

print "Wähle Freenet-Nummer. Warte auf Verbindung:<BR>\n";
      print "<IMG SRC="/balken.jpg" alt=""><BR>\n";

/usr/bin/wvdial > /var/log/wvdial.log 2>&1 &;

$oldtime=0;
      until (($_ =~ /ppp/) || (time > $tout))
        { while ($oldtime>time){}
          $_=ifconfig|grep ppp;
          $oldtime=time+2;
          print "<IMG SRC="/progress.gif" alt="">";
        }

Das Script läuft unter Apache. Damit der Trick mit dem Fortschrittsbalken auch sichtbar funktioniert, mußt du das Script vorne mit "nph-" benennen und am Anfang einen kompletten HTTP-Header ausgeben:

#!/usr/bin/perl -w

Online-Script ohne Pufferung, zeigt Einzelschritte an.

Funktioniert nicht mit Proxys wie WebWasher.

use FileHandle;
STDOUT-> autoflush (1);

print "HTTP/1.0 200 Okay\n";
print "Content-type: text/html\n\n";

Mag sein, daß da noch der eine oder andere Unsinn drin ist (so genau habe ich mich da nicht eingelesen), aber es funktioniert bei mir (jetzt dank DSL nicht mehr <s>).

Grundsätzlich: Die Lösung deines Problems kann auch darin bestehen, die Sichtweise komplett umzukehren: Warte nicht auf Zeichen vom Socket und laß unter Umständen mal alle Minute was zusätzlich printen, sondern drucke jede Minute was, und zwischendurch dann eventuell noch das vom Socket (oder woher auch immer deine Eingabe kommt).

- Sven Rautenberg