Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [long polling] Krótkie pytanie
markonix
post
Post #1





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

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


Powoli zaczynam zapoznawać się z tą technologią bo dużymi krokami zbliża się do mnie konieczność zbudowania komunikatora/czatu o dużej przepustowości.

Zastanawia mnie jednak jedno.
Jak już dobrze zrozumiałem to ta technologia polega na tym, że przeglądarka wysyła żądanie pod podaną stronę (php) i oczekuje na odpowiedź.
Wszystko jest tu dla mnie jasne, zamiast co 3 sekund wysyłać Request HTTP to wysyła go raz i czeka na odpowiedź.

Ale zastanawia mnie co ma się dziać w tym momencie w skrypcie PHP, który np. odpytuje o nowe wiadomości?
Czy tutaj będzie pętla, która co sekundę (sleep) odpytuje bazę o nowe wiadomości?
Jeśli tak to gdzie tu korzyść oprócz zmniejszonej liczby Requestów, które chyba nie są takim obciążaniem jak odpytywanie bazy danych co X sekund?

Ten post edytował markonix 8.10.2012, 20:13:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





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

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


Znowu wracam do problemu z long polling.

  1. while ($current == $last_id) {
  2. usleep(6000000);
  3. $current = shout_pro_lastId();
  4. }


Oki, mniej requestów, zapytania są optymalne, ale teraz naszła mnie kolejna myśl co do wydajności takiego rozwiązania, a mianowicie liczba połączeń z bazą.
Przy pracy nad czatem zawiesiłem parę razy serwer - "too many connections". Oczywiście był to wynik błędnych pętli ale ten błąd kieruje uwagę na powyższy problem.
Funkcje z rodziny sleep nie kończą w żaden sposób skryptu, tak więc przyjmując te 30 sekund jeden użytkownik przez 30 sekund zajmuje bazę, albo przynajmniej utrzymuje z nią połączenie. Czy dobrze myślę? Czy utrzymanie połączenia może spowodować jakieś problemy? Czy może przy każdym obrocie pętli zamykać połączenie i otwierać na nowo?

Ten post edytował markonix 29.09.2013, 19:52:22
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 16:39