irc bot

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • irc bot

    Hallo Leute,

    hab mal wieder ein Problem und zwar habe ich ein irc bot programmiert welcher folgende aktion ausführen soll:
    irc netz connecten dann chanliste empfangen und anschließend in jeden channel connecten.

    jedoch hängt er sich manchmal einfach auf hier mal mein script dazu:

    PHP-Code:
    <?php

    //Nur ausnahme Fehler anzeigen
    error_reporting(1);

    //Kein Zeitlimit
    set_time_limit(0);

    //Hier Ausgeben
    echo "USAGE: php php_spread_bot.php server port\\r\n";                                                          

    if(!empty(
    $_SERVER["argv"][1]) && !empty($_SERVER["argv"][2]))
    {

    //Connect
    $server $_SERVER["argv"][1];
    $port $_SERVER["argv"][2];
    $nickn "burncycle";
    $realn "burncycle";
    $message "Wartungsarbeiten von 11 Uhr bis 12 Uhr";

    //Hier zum server verbinden
    $connect fsockopen($server$port);

    //Username an server senden
    fputs($connect"USER ".$nickn." 0 0 :".$realn."\\r\\n");

    //Nickname an server senden
    fputs($connect"NICK ".$nickn."\\r\\n");

    //Channel liste von Server beziehen
    fputs($connect"LIST \\r\\n");

    $answer = array();

    //Antwort von server lesen
    while (!feof($connect)) {
       
    $answer[] = fgets($connect);
    }

    $chanlist implode('',$answer);

    echo 
    $chanlist;

    preg_match_all("/(#[a-zA-Z0-9_\\.]{1,50})+[\s0-9]{1,}/",$chanlist,$ausgabe);

    print_r($ausgabe);

    foreach(
    $ausgabe[1] as $key => $value)
    {

    fputs($connect"JOIN " $value "\\r\\n");

    fputs($connect"PRIVMSG " $value " :" $message "\\r\\n");

    echo 
    $value."\r\n";

    }

    //Verbindung beenden
    fputs($connect"QUIT\\r\\n");

    fclose($connect);

    }

    ?>
    dass ganze soll in meinem eigenen netz eingesetzt werden können und dient dazu nachrichten zu verbreiten - wenn wartungsarbeiten anstehen etc. - das ganze läuft als CLI.

    danke für antworten.

    gruß
    Robert

    PS: es hat wiedermal die backslashes zerschossen ...
    Zuletzt geändert von subabrain; 03.12.2006, 12:33.

  • #2
    herzliches beileid. finde erst mal heraus, wo sich die anwendung aufhängt.
    beginne damit, dass du nach _jedem_ befehl sicher gehst, dass dieser richtig ausgeführt wurde.

    Kommentar


    • #3
      es hängt sich nach
      PHP-Code:
      //Antwort von server lesen
      while (!feof($connect)) {
         
      $answer[] = fgets($connect);

      auf.

      gruß
      Robert

      Kommentar


      • #4
        woher weißt du, dass es nicht _in_ der while schleife passiert?
        kannst du dir sicher sein, dass bis dahin jeder befehl erfolgreich ausgeführt wurde?

        Kommentar


        • #5
          ja wenn ich
          PHP-Code:
          //Antwort von server lesen
          while (!feof($connect)) {
             
          $answer fgets($connect);
             echo 
          $answer;

          gibt er mir alles aus.
          aber danach hängt er sich auf bzw. hört nichtmehr auf daten zu lesen.

          gruß
          Robert

          Kommentar


          • #6
            und daraus schließt du, dass eof empfangen wird und die while schleife terminiert?

            Kommentar


            • #7
              nein sie terminiert nicht - sorry aber ich steh aufm schlauch...

              gruß
              Robert

              Kommentar


              • #8
                dann wird anscheinend auch kein eof gesendet. d.h. du musst anders herausfinden, wann die liste vollständig empfangen wurde - gibt es am ende irgend eine besonderheit - z.b. doppelter zeilenumbruch o.ä.?

                Kommentar


                • #9
                  hi,

                  so habs gelöst wie du bereits sagtest - gibt es kein zeilenende habs jetz so gemacht das break; gemacht wird wenn das ende der liste gesendet wurde - thx!

                  gruß
                  Robert

                  Kommentar

                  Lädt...
                  X