Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jaka technologia dla long polling i push?
Forum PHP.pl > Forum > PHP
Prph
Witajcie,

Posiadam serwer z ogromną bazą, gdzie dane (kursy, finanse itp) zmieniają się bardzo często i należy je dostarczać do przeglądarki w czasie rzeczywistym.
Dane do bazy wchodzą przez osobny system. Sama baza stoi na MySQL (i daje radę), ale może być zmieniona.

Rozwiązanie, które najlepiej dostarcza aktualne dane do klienta, to Websocket. Przeglądarka wpina się w niego, a po stronie serwera jakiś system ładuje w niego dane. Widziałem takie rozwiązania i działają imponująco. Dla starszych przeglądarek używa się long pollingu zamiast pushu po websockecie.

Moje pytanie jest, w jaki sposób zaprojektować system wyciągający ZMIENIONE dane w bazie. W PHP można to zrobić prosto za pomocą while(true) ze sleep(1) np. Ale to nie jest efektywne rozwiązanie. PHP w ogole chyba się nie nadaje do tego.

Czego zatem można użyć? Node.js? Ruby? Macie w tym temacie jakieś doświadczenie?

!*!
A próbowałeś http://socket.io ?
redeemer
Przy zmianie kursu (w PHP) wysłać za pomocą ZeromMQ wiadomość do Node.js, który to roześle ją (lub inną wiadomość/event) do połączonych klientów za pomocą socket.io.
Prph
Dzięki za informacje.

Rozumiem, że podczas zapisywania do bazy musiałbym notyfikować, że zaszły zmiany.

Ale jeśli to niezależny system wrzuca do bazy dane? Jest na to sposób? Jakieś triggery w bazie?
redeemer
Cytat(Prph @ 25.06.2014, 11:22:46 ) *
Rozumiem, że podczas zapisywania do bazy musiałbym notyfikować, że zaszły zmiany.
Tak, zaraz po (lub przed) zapytaniem do bazy wysyłasz wiadomość do Node.js

Cytat(Prph @ 25.06.2014, 11:22:46 ) *
Ale jeśli to niezależny system wrzuca do bazy dane? Jest na to sposób? Jakieś triggery w bazie?
W przypadku MySQL możesz użyć sys_exec . Jest też coś takiego jak zeromq-for-mysql, ale nie zagłębiałem się w to.
Prph
Dzięki! Jak przygotuje architekturę to podzielę się swoimi spostrzeżeniami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.