Andi van W: Deamon und Datenaustausch mit diesem

Beitrag lesen

Guten Tag,

ich plane zur Zeit einen Deamon in PHP zu schreiben.
Dieser soll eine Verbindung mit verschiedenen Spieleservern offen halten und den dort geführten Chat bereit halten.

Meine erste Frage:
Sollte ich je Server einen "Childprozess" starten? Der die Komunikation übernimmt?

Nun zu meinem etwas wichtigeren Problem:
Angenommen der Deamon hält die Daten (Chat, Spielerevents, ...) vor und würde auch eventuelle Befehle an den Server erledigen können (Kick, Ban, ...), dann müsste ich diesem Deamon noch die Befehle übergeben, bzw. die Chatdaten von diesem Abrufen können. Der Abruf würde über ein per AJAX aufgerufenes PHP-Script laufen, das wie bei normalen Webseiten nach dem Abruf beendet ist. Nur wie kann das Script die Daten aus dem Deamon abrufen?

Bei allen Methoden die ich mir bisher angeschaut hatte, kam die Frage des gleichzeitigen Zugriffs auf. Dadurch hatte ich bei den bisherigen Methoden nicht wirklich was gefunden.
Dabei hatte ich mir shared_memory, msg_get_queue und sockets angeschaut.

Den Aufbau stelle ich mir grob so vor:

viele Clients (sehen den Chat und können Kicken/Bannen, ...)
| (1)
ein PHP-Deamon (oder pro GameServer) (Überträgt Befehle zum Gameserver und hält den Chat vor)
| (2)
Game-Server (Sendet bei einem Event die Daten zum Deamon

Bei (2) kann ich mir auch vorstellen, dass der Server jeweils ein script aufruft und dieses im hintergrund, wie bei den Clients, die Daten an den Deamon weiter gibt. Daten die von den Clients zum Server gesendet werden, können natürlich auch direkt dort ausgeführt werden und müssen nicht über den Deamon laufen, dieser würde durch die Events auf dem Server indirekt informiert über die Aktionen.

Wäre es eventuell Sinnvoller, das ganze über die, gut zu strukturierende, DB zu lösen? Wenn nichts los ist, würde so kaum Traffic erzeugt und mit der DB arbeite ich ja eh für andere Daten.

Wichtig: Ich möchte das mit PHP lösen, da dies bei uns die meisten können und keine Speziellere Konfiguration der Server nötig ist. (ggf. muss natürlich ein Modul ergänzt werden, aber das zähle ich nicht zu spezielle Konfig)

Zum Gameserver: Dieser kann je Event einzelne Infos absenden oder in dauerhaften Verbindungen die Daten zurück geben. Hier ist also beides möglich.

MfG Andi