Was effizienter ist, senden WebSocket-updates mit einer MySQL-Datenbank ändern

Ich bin derzeit Experimentieren mit WebSockets in ein Gebot zu reduzieren /entfernen, die Notwendigkeit für ständige AJAX requests in einer potenziell Umgebungen mit geringer Bandbreite. Alle Geräte sind WebSocket-konform, so gibt es keine Problem gibt, und ich werde versuchen, Sie zu halten, um native PHP WebSockets, keine node.js oder anderen frameworks /Bibliotheken (Das bisher in Ordnung).

Was ich Suche zu tun, ist zu entscheiden, wie man über die Benachrichtigung der verbundenen clients über eine Aktualisierung einer Datenbank von einem anderen Client. Der use-case in Frage, ist eine person, die beim drücken einer Taste auf Ihrem Gerät, die dann die Warnungen, dass Personen, die Geschäftsführer(s) zu drücken. Also die zwei Optionen ich habe zwar wie folgt:

1. Looping einer Datenbank-Abfrage (PHP)

War mein Erster Gedanke, einfügen einer query in die WebSocket-server, der effektiv sagen, "Hat die alert-Feld verändert? Wenn dem so ist, Benachrichtigen Sie den manager(s)". Dies ist zwar die einfachste und sinnvollste Ansatz (die ich mir denken kann), scheint es, verschwenderisch zu haben, ein PHP-Skript entwickelt, um reduzieren die Belastung auf dem server läuft jetzt eine Abfrage jede Sekunde, mindestens jedoch dies würde sicherstellen, dass, wenn ein Datenbank-update erkannt wird, wird das update gesendet wird.

2. Senden einer Benachrichtigung vom Client

Ein anderer Gedanke, den ich hatte, war, dass, wenn der client die Datenbank aktualisiert, Sie könnten in der Tat senden Sie eine WebSocket Meldung selbst. Dies hat den Vorteil der Reduzierung der intensiven und geloopt Abfragen, aber auch bedeutet, dass ich brauchen würde, um eine WebSocket-Nachricht gesendet jeder Zeit will ich keine Daten geändert werden, wie:

$.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 das die beste option, da es am effizientesten ist, aber ich habe Angst, dass es eine chance gibt, kann die Verbindung drop zwischen die Aktualisierung der Datenbank und das versenden der WebSocket-Meldung, die möglicherweise erstellen Sie eine Notwendigkeit für eine fallback-prüfen Sie in der PHP-Datei, ähnlich wie die in der ersten Lösung, wenn auch mit einem längeren Zeitintervall (Z.B. alle 30 Sekunden).

3. MySQL Trigger?

Dies ist lediglich eine Vermutung, aber vielleicht eine andere option ist das erstellen einer MySQL-trigger, die können irgendwie Benachrichtigen server.php Datei direkt? Ich habe keine Ahnung, wie das funktionieren würde, und würde raten, dass diese bis Ende Mai, die gleiche oder ähnliche Abfrage von Anforderungen wie Lösung #1, aber es ist nur eine, obwohl...

Vielen Dank im Voraus für Eure Hilfe 🙂

EDIT: Lösung Möglichkeit 4

Anderen Gedanken hat, nur tauchte in meinem Kopf in der Tat, wobei der PHP-Datei verwendet, um die Datenbank zu aktualisieren, könnte in der Tat eine WebSocket-Nachricht integriert. So dass, wenn die PHP-Datei die Datenbank aktualisiert, der WebSocket-server mitgeteilt, über PHP ist das möglich?

  • Haben Sie mittels SSE (Server Side Event)?
  • Nicht erst jetzt, habe gerade schaute Sie nach oben und während Sie das tun, haben potential, ich fühle mich wie ein Ereignis-listener im Ort wäre weniger effizient, als nur das drücken einer einzigen Anmeldung? Vor allem, wie sich das system entwickelt, mit Potenzial für viele ähnliche Anwendungsfälle werden alle ausgeführt, wenn ein system. Oder gibt es eine Möglichkeit, dass der SSE durchführen "Auf der MySQL-DB update, informieren, WebSocket-server" - Aspekt?
  • für one-way -, SSE-scheint einfacher zu implementieren und zu verwalten, und das Lesen von einigen Artikeln, deren Leistung ähnlich zu sein scheinen. Ithink das Skript behandelt das update kann auch verwendet werden, um drücken Sie die update-out nach erfolgreichen update in die DB.
Schreibe einen Kommentar