socket_listen() und socket_connect() in einem Script

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

  • socket_listen() und socket_connect() in einem Script

    Moinsen!

    Ich habe Probleme folgendes Szenario zu realisieren:

    Ich möchte mit einem Bot in den IRC connecten (läuft soweit auch), und das Script soll dann permanent im Hintergrund laufen. Gleichzeitig soll das Script aber auf Verbindungenversuche auf einem anderen Port warten.
    Sobald eine Verbindung hergestellt ist, kann man den Bot dann über diesen Socket steuern (quasi sowas wie die DCC-Partyline bei einem Eggdrop). Das soll dazu dienen, dass ich später Änderungen auf einer Website per Socket-Verbindung mit dem Bot im IRC-Channel posten kann.

    Mein Problem dabei ist, dass das Script bei socket_accept() immer wartet und somit die Socket-Aktivität auf dem IRC-Socket nicht ausgewertet werden kann -> kein PONG auf PING -> Bot wird disconneted.

    Jetzt meine Frage: Ist das überhaupt irgendwie in PHP zu realisieren, oder habe ich mir in den letzten 2 Tagen umsonst den Kopf darüber zerbrochen? =)
    Irgendwie müsste man ja die socket_accept()-Funktion überspringen wenn keine Verbindungsanfragen kommen, damit er wieder in den Loop geht und die Nachrichten vom IRC-Server auswerten kann. Die Frage ist nur wie?

    Wäre für Vorschläge sehr dankbar, mir platzt nämlich gleich die Zwiebel

    Gruß, Muckel.
    mfg,
    muckel

  • #2
    Re: socket_listen() und socket_connect() in einem Script

    Irgendwie müsste man ja die socket_accept()-Funktion überspringen wenn keine Verbindungsanfragen kommen, damit er wieder in den Loop geht und die Nachrichten vom IRC-Server auswerten kann. Die Frage ist nur wie?
    .. socket_accept() in den Hintergrund legen?
    IMHO musst Du die ganze Geschichte in zwei Scripte aufteilen.

    7-/anz

    Kommentar


    • #3
      Habs geschafft =)

      Man sollte sich vorher doch mal alle Funktionen genau angucken Mit socket_select und dem Listening-Socket auf socket_set_nonblock hats dann im Endeffekt endlich geklappt.
      Im Loop wird dann beim socket_select() Befehl solange gewartet bis auf einen der zwei (drei mit Child-Socket des Listening Sockets) etwas passiert. Danach kann man dann jeden Socket abarbeiten.

      Ich bin begeistert! =)
      mfg,
      muckel

      Kommentar

      Lädt...
      X