Hallo,
ich weiß nicht ganze genau wie ich mein Problem beschreiben soll.
Arbeite zurzeit an einem kleinem Teamspeak³ Bot. ( Ist erlaubt und verstößt gegen keine Nutzungsbedingungen )
Dieser geht halt per Telnet auf den Server , loggt sich ein und registriert Events.
Soweit so gut das läuft super. Das Problem ist nun allerdings das die "while" Schleife nach ca. 1-2 Stunden immer
verlassen wird weil "EOF ( End of File )" erreicht wird.
Hier mal der Code mit der Verbindung :
Habe mal das ganze geparse rausgelassen weil das ja ganz normal funktioniert.
Ich habe halt einfach immer wieder "[INFO] END OF FILE WHILE" im Log stehen -
und das passiert dann mit einem connection lost. Ich möchte aber das er
immer verbunden bleibt. Deshalb dachte ich das ganze wäre mit einem kleinen Trigger
getan der halt alle 3 Minuten etwas in den Stream schreibt aber selbst das Hilft nicht.
Die Frage ist wie bekomme ich das hin den "EOF" naja zu umgehen das er dabei nicht neu verbinden muss ?
Funktionieren muss das irgendwie weil das andere Bots ja auch können und Streams sind ja soweit ich weiß
eigentlich überall gleich ?
Falls da jemand eine Ahnung hat wäre ich für den Tipp des Jahrhunderts sehr dankbar.
ich weiß nicht ganze genau wie ich mein Problem beschreiben soll.
Arbeite zurzeit an einem kleinem Teamspeak³ Bot. ( Ist erlaubt und verstößt gegen keine Nutzungsbedingungen )
Dieser geht halt per Telnet auf den Server , loggt sich ein und registriert Events.
Soweit so gut das läuft super. Das Problem ist nun allerdings das die "while" Schleife nach ca. 1-2 Stunden immer
verlassen wird weil "EOF ( End of File )" erreicht wird.
Hier mal der Code mit der Verbindung :
PHP-Quellcode
-
- $tsFP = stream_socket_client("tcp://". $ip. ":". $tcpport , $errno, $errstr, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT);
- logToFile('[INFO] TS3-Bot started try to Connect....');
- if (!$tsFP) {
- logToFile("ERROR - MESSAGE:". $errstr . " - ". $errno);
- } else {
- stream_set_blocking ( $tsFP , true );
- $keepAliveTime = time();
- while (true ) {
- // Hier habe ich zurzeit noch Reconnect drin das er dann selbstständig nach dem EOF
- // neu verbindet aber das möchte ich ja eigentlich nicht haben
- while (!feof($tsFP)) { // Um das hier geht es mir an sich. Hier wird halt EOF erreicht.
- $result = fgets($tsFP, 2048);
- $keepAliveDiff = time() - $keepAliveTime;
- if ( $keepAliveDiff > 180 ) {
- logToFile("[TIMEINFO] - KeepAliveTriggered");
- $keepAliveTime = time();
- fwrite($tsFP, "\r\n");
- }
- if ($result != "") {
- }
- }
- logToFile("[INFO] END OF FILE WHILE");
- }
- }
Habe mal das ganze geparse rausgelassen weil das ja ganz normal funktioniert.
Ich habe halt einfach immer wieder "[INFO] END OF FILE WHILE" im Log stehen -
und das passiert dann mit einem connection lost. Ich möchte aber das er
immer verbunden bleibt. Deshalb dachte ich das ganze wäre mit einem kleinen Trigger
getan der halt alle 3 Minuten etwas in den Stream schreibt aber selbst das Hilft nicht.
Die Frage ist wie bekomme ich das hin den "EOF" naja zu umgehen das er dabei nicht neu verbinden muss ?
Funktionieren muss das irgendwie weil das andere Bots ja auch können und Streams sind ja soweit ich weiß
eigentlich überall gleich ?
Falls da jemand eine Ahnung hat wäre ich für den Tipp des Jahrhunderts sehr dankbar.