Welches ist effizienter, um WebSocket-Updates mit einer MySQL-Datenbankänderung zu senden

Momentan experimentiere ich mit WebSockets, um die Notwendigkeit konstanter AJAX-Anforderungen in einer Umgebung mit möglicherweise geringer Bandbreite zu verringern / zu beseitigen. Alle Geräte sind WebSocket-kompatibel, daher gibt es dort kein Problem, und ich versuche, es für native PHP-WebSockets, keine node.js oder andere Frameworks / Bibliotheken (die bisher in Ordnung waren) beizubehalten.

Ich möchte entscheiden, wie verbundene Clients über ein Update einer Datenbank durch einen anderen Client benachrichtigt werden sollen. Bei dem fraglichen Anwendungsfall handelt es sich um eine Person, die auf ihrem Gerät eine Taste drückt, die dann den / die Personenmanager auf diese Taste hinweist. Ich habe also zwei Möglichkeiten:

1. Durchlaufen einer Datenbankabfrage (PHP)

Mein erster Gedanke war, eine Abfrage in den WebSocket-Server einzufügen, die effektiv lautet: "Hat sich das Warnungsfeld geändert? Wenn ja, benachrichtigen Sie den / die Manager." Dies ist zwar der einfachste und sinnvollste Ansatz (den ich mir vorstellen kann), es erscheint jedoch verschwenderisch, ein PHP-Skript zu haben, das so konzipiert ist, dass der Server weniger belastet wird. Jetzt wird jede Sekunde eine Abfrage ausgeführt. Dies würde dies jedoch zumindest sicherstellen Wenn ein Datenbank-Update erkannt wird, wird das Update gesendet.

2. Senden einer Benachrichtigung vom Client

Ein weiterer Gedanke, den ich hatte, war, dass der Client, wenn er die Datenbank aktualisiert, tatsächlich selbst eine WebSocket-Benachrichtigung senden kann. Dies hat den Vorteil, dass keine intensiven und wiederholten Abfragen durchgeführt werden müssen, bedeutet aber auch, dass eine WebSocket-Nachricht gesendet werden mussjeden Mal, wenn ich Daten ändern möchte, z. B .:

$.post("AttemptDatabaseUpdate.php", {Data}).function(Result) // Don't worry about the semantics of this, it's not actual code
{
    if(Result == "Successful")
    {
        SendWebSocketNotification(OtherData);
    }
}

Vielleicht ist dies die beste Option, da sie am effizientesten ist, aber ich befürchte, dass die Verbindung zwischen dem Aktualisieren der Datenbank und dem Senden der WebSocket-Benachrichtigung unterbrochen wird, wodurch möglicherweise eine Ausweichüberprüfung in der PHP-Datei erforderlich wird Ähnlich wie in der ersten Lösung, jedoch in einem längeren Intervall (etwa alle 30 Sekunden).

3. MySQL-Trigger?

Dies ist nur eine Vermutung, aber vielleicht besteht eine andere Möglichkeit darin, einen MySQL-Trigger zu erstellen, der die server.php-Datei irgendwie direkt benachrichtigen kann. Ich habe keine Ahnung, wie dies funktionieren würde, und könnte vermuten, dass dies zu den gleichen oder ähnlichen Abfrageanforderungen wie Lösung 1 führen könnte, aber es ist nur eine Überlegung ...

Vielen Dank im Voraus für Ihre Hilfe :)

EDIT: Lösungsmöglichkeit 4

Ein anderer Gedanke ist mir gerade in den Sinn gekommen, wobei in der PHP-Datei, mit der die Datenbank aktualisiert wurde, möglicherweise eine WebSocket-Nachricht eingebaut ist. Ist dies möglich, wenn die PHP-Datei die Datenbank aktualisiert und der WebSocket-Server über PHP benachrichtigt wird?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage