Hallo
Kurze Einleitung:
Ich nutze:
$fp = @fsockopen($url, $port, $errno, $errstr, 10);
um übers Internet auf eine Application auf meinem PC zu connecten, auf die man per telnet zugreifen kann.
Nun funktioniert das Befehle senden perfekt z.B. fwrite($fp, "/activatelog\r\n"); wird auch von der Application ausgeführt.
fgets($fp); funktioniert ebfenfalls wunderbar.
Das Windows Programm schreibt "log zeilen" die man per telnet abrufen kann, aber nur wenn man connected ist.
Ich möchte nun alles was das programm schreibt, per php abrufen und auf meinem Server mit "echo" ausgeben.
Die "log" anzeige sollte ca. alle 5 sekunden aktualisiert werden.
Nun aber zu dem Problem:
Wenn ich folgenden code nutze:
fwrite($fp, "/log all\r\n");
while (!feof($fp) && $str = fgets($fp)) {
echo $str;
}
}
Wird die Seite nicht zuende geladen, weil es theoretisch keinen FEOF gibt...
benutze ich im while zusätzlich
if (false !== strpos($str, ' ')) {
break;}
Bricht er ab wenn im moment nichts mehr gesendet wird, ist auch okay so.
Nun das große Problem ist, das nur der Bruchteil ausgegeben wird, in dem das Script zum Programm connected ist.
In den 5 Sekunden bis zum "refresh" loggt das windows programm aber weitere sachen, die aber dann nicht in der ausgabe erscheinen, da das php script zu der Zeit nicht connected ist.
Nun ist meine Frage ob es möglich ist in Php die "$fp = @fsockopen" connection aufrecht zuerhalten und parallel (immer wenn eine neue zeile auftaucht) mit fgets die sachen z.b. in ein textfeld zu loggen?
Alle meine Versuche haben dazu geführt, das die Seite dann nicht geladen wurde weil er in der "while" schleife festgesteckt ist.
Kurze Einleitung:
Ich nutze:
$fp = @fsockopen($url, $port, $errno, $errstr, 10);
um übers Internet auf eine Application auf meinem PC zu connecten, auf die man per telnet zugreifen kann.
Nun funktioniert das Befehle senden perfekt z.B. fwrite($fp, "/activatelog\r\n"); wird auch von der Application ausgeführt.
fgets($fp); funktioniert ebfenfalls wunderbar.
Das Windows Programm schreibt "log zeilen" die man per telnet abrufen kann, aber nur wenn man connected ist.
Ich möchte nun alles was das programm schreibt, per php abrufen und auf meinem Server mit "echo" ausgeben.
Die "log" anzeige sollte ca. alle 5 sekunden aktualisiert werden.
Nun aber zu dem Problem:
Wenn ich folgenden code nutze:
fwrite($fp, "/log all\r\n");
while (!feof($fp) && $str = fgets($fp)) {
echo $str;
}
}
Wird die Seite nicht zuende geladen, weil es theoretisch keinen FEOF gibt...
benutze ich im while zusätzlich
if (false !== strpos($str, ' ')) {
break;}
Bricht er ab wenn im moment nichts mehr gesendet wird, ist auch okay so.
Nun das große Problem ist, das nur der Bruchteil ausgegeben wird, in dem das Script zum Programm connected ist.
In den 5 Sekunden bis zum "refresh" loggt das windows programm aber weitere sachen, die aber dann nicht in der ausgabe erscheinen, da das php script zu der Zeit nicht connected ist.
Nun ist meine Frage ob es möglich ist in Php die "$fp = @fsockopen" connection aufrecht zuerhalten und parallel (immer wenn eine neue zeile auftaucht) mit fgets die sachen z.b. in ein textfeld zu loggen?
Alle meine Versuche haben dazu geführt, das die Seite dann nicht geladen wurde weil er in der "while" schleife festgesteckt ist.
Kommentar