Hallo!
Folgendes ist zu realisieren:
Ich habe eine Seite1.php die über eine C++ Anwendung angesteuert wird. Diese Seite soll sich mit Werten, die sie von der Anwendung bekommt, (server port nick etc.) zu einem IRC-Server verbinden.
Das macht sie auch und gibt dann alle Nachrichten auf der Seite aus.
Diese Nachrichten werden von der C++ Anwendung gelesen und ausgewertet.
Jetzt habe ich aber das Problem dass man natürlich die Verbindung von der C++ Anwendung aus beeinflussen will. Sei es andere Channels joinen oder Nachrichten verschicken.
Zuerst dachte ich mir ich mache zB
SendMessage.php und übergebe dem die Nachricht. In der SessionID wird dann der Socket gespeichert auf Seite1 und SendMessage verwendet dann den gleichen und verschickt die Nachricht. Wunderbar!
Nur leider kann ich keinen Socket an andere Scripts weitergeben
Dann dachte ich mir:
Ich mache eine MYSQL Datenbank, die die auszuführenden Dinge speichert.
ZB Join #channel
Die Seite1.php, die in einer Endlosschleife die Nachrichten abholt, soll in dieser Schleife die MYSQL Datenbank nach neuen auszuführenden Dingen untersuchen und diese durchführen.
Über die Seiten SendMessage.php zB werden die auszuf. Dinge in die Datenbank eingetragen.
Problem hierbei:
Ich empfange die Daten ja mit fgets.
Sobald keine Daten mehr vom Socket ankommen blockiert fgets solange, bis wieder Daten ankommen. D.h. auch die ganze Schleife wird blockiert und die auszuführenden Dinge können erst wieder aus der DB gelesen werden, wenn Daten vom Server ankommen.
PHP bietet keine Threads an, oder? Dann würde ich die Dinge in einem Thread abholen und ausführen...
Habt ihr andere Ideen wie ich diese Art von Multitasking (gerne auch ohne MYSQL) erreichen kann?
So dass ich Daten abfangen kann, jedoch auch welche versenden kann, ohne davor auf ankommende Daten warten zu müssen.
Ich hoffe ihr habt mich verstanden und könnt mir helfen
Viele liebe Grüße,
Kevin
P.S.: Bin leider eher der C++-Profi und kenn mich mit PHP noch nicht perfekt aus ;(
Folgendes ist zu realisieren:
Ich habe eine Seite1.php die über eine C++ Anwendung angesteuert wird. Diese Seite soll sich mit Werten, die sie von der Anwendung bekommt, (server port nick etc.) zu einem IRC-Server verbinden.
Das macht sie auch und gibt dann alle Nachrichten auf der Seite aus.
Diese Nachrichten werden von der C++ Anwendung gelesen und ausgewertet.
Jetzt habe ich aber das Problem dass man natürlich die Verbindung von der C++ Anwendung aus beeinflussen will. Sei es andere Channels joinen oder Nachrichten verschicken.
Zuerst dachte ich mir ich mache zB
SendMessage.php und übergebe dem die Nachricht. In der SessionID wird dann der Socket gespeichert auf Seite1 und SendMessage verwendet dann den gleichen und verschickt die Nachricht. Wunderbar!
Nur leider kann ich keinen Socket an andere Scripts weitergeben
Dann dachte ich mir:
Ich mache eine MYSQL Datenbank, die die auszuführenden Dinge speichert.
ZB Join #channel
Die Seite1.php, die in einer Endlosschleife die Nachrichten abholt, soll in dieser Schleife die MYSQL Datenbank nach neuen auszuführenden Dingen untersuchen und diese durchführen.
Über die Seiten SendMessage.php zB werden die auszuf. Dinge in die Datenbank eingetragen.
Problem hierbei:
Ich empfange die Daten ja mit fgets.
Sobald keine Daten mehr vom Socket ankommen blockiert fgets solange, bis wieder Daten ankommen. D.h. auch die ganze Schleife wird blockiert und die auszuführenden Dinge können erst wieder aus der DB gelesen werden, wenn Daten vom Server ankommen.
PHP bietet keine Threads an, oder? Dann würde ich die Dinge in einem Thread abholen und ausführen...
Habt ihr andere Ideen wie ich diese Art von Multitasking (gerne auch ohne MYSQL) erreichen kann?
So dass ich Daten abfangen kann, jedoch auch welche versenden kann, ohne davor auf ankommende Daten warten zu müssen.
Ich hoffe ihr habt mich verstanden und könnt mir helfen
Viele liebe Grüße,
Kevin
P.S.: Bin leider eher der C++-Profi und kenn mich mit PHP noch nicht perfekt aus ;(
Kommentar