Wybór rozwiązania do problemu tworzenia czatu w oparciu o PHP

0

Chciałbym stworzyć czat w oparciu o popularne technologie webowe (HTML, CSS, PHP, MySQL, Javascript, Ajax). Ze wstępnej lektury już istniejących wątków na ten temat wynika, że istnieją trzy rozwiązania:

  1. Prymitywne (cykliczne odświeżanie przy pomocy nagłówka HTML)
  2. Przyzwoite ("czysty" AJAX)
  3. Profesjonalne (Comet)

Pytanie brzmi w jakim stopniu (konkretnie) poszczególne rozwiązania różnią się wydajnością? W szczególności interesuje mnie przewaga rozwiązania nr 3 nad 2. Z góry dzięki.

0

Comet to słabe rozwiązanie, użyj web socketów

0
Krwawy Młot napisał(a):

Comet to słabe rozwiązanie, użyj web socketów

Problem webosocktów leży w tym, że potrzeba minimum vps, żeby o to oprzeć chaty, ale jeśli autorowi to nie przeszkadza, to można i tak.

1

Trzymanie stale otworzonego połączenia (Comet) w PHP też jest chybionym pomysłem - na zwykłych hostingach masz limit 6-8 interpreterów php (bo każdy żre pamięć, bo musi ładować wszystko od zera). Wobec tego 8 użytkowników czatu zablokuje Ci całą stronę :)

Ajax będzie tu najlepszym rozwiązaniem, ale i tak bardzo słabym.

PHP nie nadaje się do rozwiązań czasu rzeczywistego.

Następne tak głupio nazwane tematy wywalam.

0

Ajax będzie tu najlepszym rozwiązaniem, ale i tak bardzo słabym.

PHP nie nadaje się do rozwiązań czasu rzeczywistego.

  1. Jaka technologia pozwala sprostać temu zadaniu na przyzwoitym poziomie i jest stosunkowo łatwa do opanowania dla osoby znającej już wymienione?

  2. Moglibyście (chociaż w przybliżeniu) przedstawić "graniczne" przypadki, "powyżej" których rozwiązanie ajaxowe przestanie działać prawidłowo (najlepiej liczba aktywnych, typowych userów w danym momencie)? Czy da się to wówczas w jakikolwiek sposób "reanimować"? Na jak długo, jakim kosztem?

0
  1. Pewnie node.js - javascript działający na serwerze - tylko faktycznie musisz znać js, a nie przeklejać gotowce do jQuery.

  2. Ciężko przewidzieć ile będą spamować. Ajax w teorii powinien pociągnąć ze 100-200 osób spokojnie (zależy jak często odświeżasz i jak długo będą wczytywać się dane) - najwyżej będzie zmulać, ale będzie jeszcze działać. Reanimacja to będzie dokupienie interpreterów, albo przepisanie tego, więc pomyśl czy warto.

I w ogóle najlepiej to przygarnij gotowca w odpowiedniej technologii, zamiast pisać od nowa.

0

Najprostrzy czat, to zwykłe wysyłanie wpisów do bazy i wyświetlanie w wybranym div-ie skryptem jquery bez przeładowywania całej strony. Skrypt jquery ładuje co 5000 ms jakiś skrypt php, który za kazdym razem wyciaga z bazy np. 30 ostatnich wpisów. Całość można napisać w pół godziny. Ilosc czatujacych dowolnie duza.

0

Jeżeli ma być aż 5 sekund no to rzeczywiście, ilość czatujących można drastycznie zwiększyć, podobnie jak frustrację z korzystania z takiego czasu.

0

zależnie od budżetu i przewidywanej ilości klientów
google sam korzysta z long-poolingu (channels) i web socketów

w short-poolingu ustawionym na interwał 500 ms przy obsłudze żądania na poziomie 1ms możesz obsłużyć na raz 500 klientów przy zerowym praktycznie obciążeniu serwera - to najtańsza opcja i łatwo skalowalna - można ruch dowolnie przerzucać między serwerami, sterować obciążeniem poprzez samą zmianę interwału
long-pooling jest droższy - trzeba utrzymywać tyle połączeń ile klientów - wiadomości pojawiają się natychmiastowo ale nie zawsze warto dopłacać na rzecz 0,5s różnicy w odbiorze wiadomości
web sockety są dość problematyczne w obsłudze - o ile w long-poolingu ustawiamy timeout na jakiś czas i możemy klienta przerzucać co jakiś czas to w web socketach staramy się utrzymać połączenie cały czas - przy dużym ruchu ciężko rozdzielić obciążenie na kilka serwerów i je komunikować między sobą, no ale jak już się uda to będzie to najbardziej profesjonalne rozwiązanie - nie wiem tylko na ile php się nadaje tutaj na backend, lepiej imho wykorzystać choćby javę

0
Krzywy Orzeł napisał(a):

nie wiem tylko na ile php się nadaje tutaj na backend, lepiej imho wykorzystać choćby javę

Jeśli mowa o chacie na websockets to najlepiej node.js na serwerze.

0

Dlaczego moj post zostal usuniety? Napisalem ,ze mam juz swoja aplikacje czata i aktualnie ja rozbudowuje :). Mozna zmieniac pokoj rozmow i dodalem opcje prywatnego pokoju :). Wszystko w oparciu o PHP, MYSql, JQuery.

0

Dlatego, że nic nie wnosi do tematu. Pochwaliłeś się, że cośtam masz - fajnie. Nie napisałeś jednak żadnego szczegółu technicznego, sposobu rozwiązania problemu, o którym jest wątek czy czegokolwiek co w jakikolwiek sposób pomógłby autorowi wątku, nie podzieliłeś się kodem, nic.

Po co nam post "A ja mam i ma dużo bajerów, a wy nieeee"?

1 użytkowników online, w tym zalogowanych: 0, gości: 1