![]() |
![]() |
-WideSky- |
![]()
Post
#1
|
Goście ![]() |
Witam.
Zastanawiam się nad technologią shoutboxa. Chciałbym zrobić coś w rodzaju chatu. Ma to działać tak: W przeglądarce X ktoś wykonuje akcję (przykładowo wysyła wiadomość o jakiejś treści). W tym samym czasie w przeglądarce Y (na innym komputerze lub na tym samym, to nie gra roli) chcę, żeby ktoś otrzymał tę właśnie wiadomość. Oczywiście konieczne będzie przesłanie tej wiadomości do bazy. Moje pytanie brzmi: co dalej? Nie widzę innego sposobu, jak tylko ustawić timeout w przeglądarce na jakąś wartość i co pewną ilość milisekund wykonywać zapytanie sprawdzające, czy przypadkiem nie ma jakichś nowych wiadomości które należy wyświetlić użytkownikowi. Tylko powstaje problem - już przy 10 użytkownikach zacznie się robić sieczka, jeśli każdy powiedzmy co 250 milisekund będzie próbował wysłać do bazy zapytanie. A aplikacja docelowo ma działać na znacznie więcej uzytkowników niż 10, do tego taki chat nie będzie jedyną jej funkcją, a tylko dodatkiem - cała reszta (spora) będzie uzywać tej samej bazy. Według mnie to będzie masakrycznie obciążające, i nie będzie działać w czasie rzeczywistym. A szczególnie zależy mi na tym, żeby opóźnienia nie były duże, 1 sekunda to już za dużo. Jest jakieś inne wyjście? Poza tym drugim moim problemem jest to, że ustawianie w przeglądarce czasu, co jaki ma się wykonywać zapytanie, wydaje mi się jakieś nieeleganckie, a na pewno obciąża już nawet samą przeglądarkę... Nie da się od razu po wysłaniu wiadomości do bazy przez kogoś pobierać odpowiednie dane? A nie sprawdzać co określony czas, czy jest coś nowego? Chodzi o to, żeby przy małej aktywności uzytkowników (na przykład nocą) ich przeglądarki nie wysyłały masy niepotrzebnych zapytań. No i o to, że trudno ustalić wartość tego timeoutu, 250 milisekund to w pewnych sytuajcach za często, a w pewnych za rzadko. I wolałbym, gdyby od razu po zmianie zawartości bazy (czy jakiegoś pliku, jeśli istnieje taki sposób dla plików, a nie istnieje dla baz), wszyscy inni pobierali tę zaktualizowaną zawartość. Nie wiem, czy się jasno wyraziłem, ale mam nadzieję, ze ktoś mnie zrozumie. Jest jakieś rozwiązanie dla mnie? Chociaż jakiś kompromis? (Tak, wiem, jest - napisać serwle Javy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A jakieś inne? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Dziękuję za uwagę. |
|
|
![]() |
-Gość- |
![]()
Post
#2
|
Goście ![]() |
Nie mam opcji edytuj (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Bo chciałem zapytać jak z szybkością czegoś takiego... Mam dwie opcje teraz: 1. Co jakiś określony czas łączę sie z bazą i pobieram to co chcę. 2. Co jakiś określony czas łączę się z plikiem PHP, który nie łączy się z bazą od razu, tylko sprawdza warunek i jeśli jest on spełniony, to dopiero wtedy łączy się z bazą. Czy drugi sposób aby na pewno jest znacznie szybszy przy wielu użytkownikach i dużej wymianie informacji (każdy pisze coś raz na kilka sekund)? P.S. Twórcy shoutboxów są w o tyle lepszej sytuacji, że opóźnienie 10 sekund nie gra roli (co sam napisałeś), a ja chcę mieć praktycznie rzeczywisty czas (1 sekunda maksymalnie między jednym a drugim kompem)... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 21:38 |