Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Automatyczne odświeżanie, a wydajność.
Jawor
post 27.07.2011, 20:37:15
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

Ostrzeżenie: (0%)
-----


Witam,

Od pewnego czasu zastanawia mnie pewne zagadnienie.
Mianowicie jak realizowane jest automatyczne odświeżanie np. tablicy na Facebooku.
Jeżeli ktoś doda wiadomość, niemal natychmiast pokazuje się ona u nas.
Jedyne rozwiązanie jakie mi przychodzi do głowy to skrypt JS, który sprawdza czy są nowe wiadomości i ew. je pobiera.
Z teoretycznego punktu widzenia, problem rozwiązany, lecz co z wydajnością? Co sekundę odpytywać bazę byłoby zabójcze, więc zapewne trzeba operować cachem.
Może ktoś tworzył coś podobnego i podzieli się informacjami?

Pozdrawiam
Jawor
Go to the top of the page
+Quote Post
IceManSpy
post 27.07.2011, 21:30:17
Post #2





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Na pewno działa tutaj AJAX, aby pobierać / wysyłać dane asynchronicznie. Cache na pewno przyda się jako dodatek. A reszta to porządne maszyny i łącza smile.gif
Zobacz, ile osób na tym siedzi. Każda zmiana podstrony na FB to kolejne żądania => nowe dane pobrane / wysłane, więc na pewno zapytania muszą mieć zoptymalizowane i jak napisałem wcześniej - sprzęt i łącza.


--------------------
Go to the top of the page
+Quote Post
erix
post 27.07.2011, 23:08:30
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Z teoretycznego punktu widzenia, problem rozwiązany, lecz co z wydajnością? Co sekundę odpytywać bazę byłoby zabójcze, więc zapewne trzeba operować cachem.
Może ktoś tworzył coś podobnego i podzieli się informacjami?

Nie grzebałem nigdy w źródłach FB, ale było coś takiego, jak COMET.

Ale prawie nigdzie to nie działa, więc zostaje częste odpytywanie serwera.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
markonix
post 27.07.2011, 23:31:55
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Zapytanie co sekundę nie brzmi jeszcze tak strasznie.
Ważne aby to było optymalne zapytanie np. pobierające wyłącznie ostatnie ID wiadomości i tu dopiero następuje porównanie ID aktualnego z "nowym" i pobranie większej porcji danych (tekst, autor, data itp). Oczywiście jeśli przewidujemy dosyć częste aktualizacje to można pobierać od razu cały wiersz (zastąpić 2 zapytania jednym).


--------------------
Go to the top of the page
+Quote Post
CuteOne
post 28.07.2011, 00:30:22
Post #5





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Poczytaj o node.js smile.gif sam ostatnio się nim bawię i śmiem twierdzić, że w połączeniu z WebSocketami (gdy tylko wszystkie przeglądarki go zaimplementują) będzie najlepszym rozwiązaniem do tego typu zadań. A na razie zostaje bawić się AJAXem lub łączyć JS z Flashem
Go to the top of the page
+Quote Post
by_ikar
post 28.07.2011, 10:11:06
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Może to też być jedno zapytanie, dla wielu elementów, nie jednego konkretnego, bo wtedy powstałoby wiele równoległych zapytań dla każdego elementu z osobna, a tak powstaje powiedzmy co sekundę jedno zapytanie które zwraca elementy nadpisane, a skrypt aktualizuje tylko te elementy które zostały zaktualizowane. Niech istnieje przykładowo jedna tabelka dla danego usera który jest online w której będą trzymane informacje, które się zmieniły w trakcie jego pobytu na stronie, do tego odpowiednie triggery które aktualizują tą tabelkę jeżeli zostanie inna zaktualizowana i można dość wiele rzeczy w ten sposób zrobić. Przynajmniej ja tak to widzę, nie wiem jak to jest na fb rozwiązane dokładnie.

Dokładnie tak jak wyżej koledzy piszą, konkretne maszyny, zwykły serwer współdzielony wymiękłby przy kilkunastu użytkownikach online. Dlatego takie możliwości nie są dla wszystkich.
Go to the top of the page
+Quote Post
CuteOne
post 28.07.2011, 12:24:45
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Chyba nie doceniasz PHP wink.gif kilkunastu użytkowników to żadne obciążenie. Patrz na duże serwisy gdzie serwer odpytywany jest praktycznie non-stop a serwis jakoś nie pada smile.gif Pamiętaj, że poza zwykłym odpytywaniem serwera co sekundę wymyślono również inne "mechanizmy", które w znacznym stopniu odciążają serwer
Go to the top of the page
+Quote Post
kamil_biela
post 28.07.2011, 13:50:55
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


I tak zwykle serwisy wykładają się na problemach z wydajnascią bazy danych a nie na języku który je obsługuje. No chyba, że ktoś coś potwornie zepsuł wink.gif.


--------------------
zagr.am - najlepsze flash do zagrania. Codziennie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 09:22