![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam zamiar zrobić shoutbox oparty o bazę danych MySQL. Jednak muszę wziąć pod uwagę, że w jednym momencie mnóstwo osób będzie czytało (shoutbox byłby w czasie rzeczywistym - co 1 sec pobieranie wpisów za pomocą ajax lub podczas dodania wpisów) jeżeli tak to w ciągu sekundy wykona się 1000 zapytań dla tysiąca userów nie piszących lub 3000 zapytań dla userów piszących. Jak należy to zrobić, aby było to szybkie, optymalne i bez lagów. Obecnie mam tak, że co pół sekundy za pomocą ajax ładuje plik txt z wpisami, a cron co 2 min wykonuje pętle trwająca 118 sec ( sleep(1); po każdej iteracji ), jednak są lagi w tym. Jakieś sugestie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
a po co ajax co 0,5 sekundy? i po co ten cron? jak na dużą liczbę osób to wydaje mi się, że ajax co 2 sekundy całkowicie wystarczy na zwykłego shoutboxa
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
jak rozmawia tyle osób to lepiej żeby co 2 sec a cron... ogranicza mi zapytania do 1 w ciągu sekundy niż 1000 dla tylu samo userów... generuje i wpisuje wszystko do pliku txt i ten plik wyświetlam.... strona nie uciągnęła by 1000 zapytań w jednym momencie- za dużo otwartych połączeń
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Optymalizuj... Wysyłaj z zapytaniem AJAX choćby znacznik czasu ostatniej wypowiedzi widocznej dla usera po jego stronie. Dopóki jest on identyczny z ostatnim w bazie - nie rób nic/zwracaj coś co oznacza by klient nic nie robił, zostawiał wszystko jak było. Jeśl pojawią się nowe wpisy, będą one różne, co da sygnał do wysłania nowej wersji. Najlepiej jeszcze gdyby to co wygenerowano było wrzucane do cache'u.To zredukuje liczbę zapytań do bazy do jednego pomiędzy nowymi wpisami w shoutboxie. Reszta userów pobierać będzie wpisy z cache.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Znów będę polecał shoutbox nospora, bo został on napisany bardzo optymalnie. W dziale Gotowe rozwiązania w Algorytmy, klasy funkcje masz temat założony przez ~nospora pod tytułem Shoutbox
![]() ![]() Aha, jeśli nie chcesz używać mysql, wydaje mi się że najlepszym wyjściem byłoby użycie wydajnego memcache. Bardzo prosta implementacja tego jest w php, ale na serwerze musisz mieć zainstalowany moduł. BTW. Js niedługo dostanie obsługę socketów (albo już ma, ja nie w temacie) więc możesz się nimi zainteresować ![]() Ten post edytował bim2 7.07.2010, 13:52:22 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 04:01 |