Jeśli korzystasz z websocketów, powinieneś korzystać z powiadomień od klienta. To jeden z ich głównych przypadków użycia.
Jeśli obawiasz się niespójności spowodowanych zrywaniem połączenia lub zmianą między nimi, możesz wdrożyć system podobny do Etykiety HTTP , gdzie klient wysyła kod skrótu, na który możesz odpowiedzieć po stronie serwera, jeśli wystąpi konflikt podczas aktualizacji.
Aktualizacja:Chyba trochę źle zrozumiałem twój początkowy problem. Jeśli dobrze rozumiem twój przypadek użycia:wysyłasz aktualizacje bazy danych od klienta, a następnie wszystkie podłączone klienty muszą zostać zaktualizowane. W takim przypadku myślę, że serwer powinien wysyłać wiadomości aktualizacyjne po wykonaniu aktualizacji bazy danych, więc zgadzam się z rozwiązaniem 4. Zakładam, że twój serwer websocket jest tym samym serwerem, na którym działa PHP i wykonuje aktualizacje bazy danych.
Jednak, w zależności od przypadku użycia, klient powinien nadal wysyłać wartość skrótu przy następnym żądaniu identyfikującym jego „widok świata”, aby nie wykonywać identycznych aktualizacji wiele razy, jeśli połączenie zostanie zerwane.
Aktualizacja 2:zrozumiano więc, że rzeczywiście używasz oddzielnego, samodzielnego serwera websocket. Zasadniczo masz dwa różne serwery internetowe po stronie serwera i masz problem z komunikacją między nimi. To jest prawdziwy problem i polecam używanie tylko jednego serwera na raz – albo spójrz na użycie Obsługa gniazda sieciowego Apache (eksperymentalne i niezbyt zalecane) lub migracja skryptów php do instancji websocket.
Ani PHP, ani Apache nie były budowane z myślą o websocketach. Skonfigurowanie samodzielnego serwera websocket przy użyciu tylko PHP jest dość łatwe, ale może nie być tak proste, aby przenieść do niego resztę stosu PHP, jeśli kod opiera się na Apache/serwerze WWW. Obsługa websocketu Apache również nie jest optymalna. W przypadku prawdziwego rozwiązania typu websocket najlepszą praktyką byłoby niestety użycie technologii stworzonej dla niego od podstaw.