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%)
-----


Jeszcze wracając do "prostego" polling.
Jaki czas powinno mieć oczekiwanie na odpowiedź?
Początkowo wydawało mi się czym dłużej tym lepiej bo w końcu chodzi o zmniejszenie liczby requestów.
No ale gdy stworzyłem testowy skrypt to po 45 sekundach otrzymałem error 500.

No i teraz pytanie co z tym zrobić?
- Przechwycić błąd
[JAVASCRIPT] pobierz, plaintext
  1. error : function(XMLHttpRequest, textstatus, error) {
  2. comet();
  3. }
[JAVASCRIPT] pobierz, plaintext

i od nowa oczekiwanie?
- Starać się jak najbardziej zwiększyć czas wykonywania skryptu (albo najlepiej no-limit)?

Te pierwsze wydaje mi się bardziej bezpiecznie ale przykładowo przymierzam się do poprawek w obecnych skryptach gdzie np. teraz wartości odświeżane są co 15 sekund. Wprowadzając omawianą technikę to będzie oszczędność dość mizerna (1 zamiast 3), a gdyby execute_time wynosił np. 10 minut to już gdzieś oszczędność na poziomie 40 requestów i jakoś bardziej działa to na wyobraźnie i motywuje do przeróbek w obecnych skryptach.

Ten post edytował markonix 10.10.2012, 11:58:32
Go to the top of the page
+Quote Post
redeemer
post
Post #3





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


http://tools.ietf.org/html/rfc6202#page-15 5.5 Timeouts (ale cały dokument jest warty uwagi)


Co ciekawe w drafcie http://tools.ietf.org/html/draft-loreto-ht...onal-07#page-15 jest to bardziej rozwinięte i możemy tam przeczytać dodatkowo:
Cytat
Several experiments have shown success with timeouts as high as 120
seconds, but generally 30 seconds is a safer value. Therefore
vendors of network equipment wishing to be compatible with the HTTP
long polling mechanism are advised to implement a timeout

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: 3.10.2025 - 10:45