Internetowy czat w PHP

0

Witam. Tworzę portal społecznościowy dla mojej szkoły (ważne!) czyli dla dość małego grona osób (300-400 to ostateczne maksimum). Robię to w PHP z użyciem baz mySQL. Teraz chciałbym dodać coś w rodzaju czatu (np. jak na facebook'u), ale zupełnie nie wyobrażam sobie zrobienia tego w PHP. Może to dlatego, że nie jestem specjalistą, ale o ile można by z użyciem AJAX'a zrobić odświeżanie okienka bez ładowania strony od nowa, gdy użytkownik wyśle wiadomość, to wydaje mi się trudne zrobienie odświeżania tego okienka, kiedy ta druga osoba coś napisze. Wiem, że czat fb jest bardzo zawiłą strukturą i wykorzystuje nawet C++, ale w moim przypadku nie potrzeba takiej wydajności. Jeśli ktoś mógłby mi powiedzieć czy da się to zrobić w PHP i jak, albo w jakim innym języku (może RUBY?) i czy bazy danych mySQL dadzą sobie radę z czymś takim, byłbym wdzięczny :) Z góry dziękuję za odpowiedź.

Dla tych, którym nie chce się czytać moich "nudów" : >.

  1. Czy w PHP da się napisać czat (coś w stylu tego z fb) dla małej liczby osób?
  2. Jeśli tak, to jak spowodować odświeżanie okienka z czatem gdy ktoś do nas coś napisze? Nie pytam o dokładny kod, tylko ogólnie. Może na przykład pytanie bazy czy są nowe informacje co sekundę?
  3. Jeśli nie, to w czym można coś takiego napisać (może RUBY, bo słyszałem, że jest nie za trudny)?
  4. Czy baza danych mySQL jest w stanie obsłużyć coś takiego? Czat ma być dla maksimum 300-400 osób.
1
  1. Tak, ale będzie musiał odświeżać stronę co 10s, żeby sprawdzić, czy są nowe wiadomości i za każdym razem przy wysyłaniu wiadomości, czyli nie polecam.
  2. Timer automatycznie odświeżający stronę.
  3. JavaScript + AJAX (właściwie AJAX to część JS)
  4. Jeśli dobrze ją zaprojektujesz to będzie działać bardzo super (tak, dokładnie bardzo super).

W ajax musisz wysyłać żądanie do pliku PHP - ewentualnie podawać mu datę ostatniej wiadomości. Wtedy skrypt pobiera sobie z bazy najnowsze wiadomości i zwraca. Przy wysyłaniu wiadomości ajax musi wywołać inny skrypt, który doda informacje do BD. :)

0

Dziękuję :). A jak myślisz co ile taki timer? Bo z jednej strony jak, będzie się ciągle odświeżało to może być powolne, a z drugiej jak za rzadko, to korzystanie z tego będzie niewygodne. I jeszcze lepszy jest do tego AJAX czy JSON?

0

Nie rób tego w PHP to niedorzeczne. W PHP piszesz skrypty do obsługi BD, które wywołujesz asynchronicznie (bez odświeżania strony) dzięki AJAX!

Mylisz podstawowe pojęcia.
JSON to sposób formatowania danych. Tak, żeby PHP umiało je odczytać.

AJAX będzie zdecydowanie najlepszy do tego celu.

0

Ehhh... Wybacz - jestem początkujący, ale z tego co wiem to tym AJAXEM wysyłamy zapytanie do skryptu PHP. Chyba, że da się bezpośrednio do bazy danych, ale nie sądzę.

1

A gdzie ja napisałem, że da się bezpośrednio? AJAX ma prosić PHP o pomoc. PHP po przyjęciu danych (najlepiej jako POST, czyli JSON) zapisuje co trzeba w BD.

Tak więc odpowiedź na pytanie: "Co wybrać? PHP, AJAX, czy JSON" brzmi: "Wszystko!" :)

W PHP piszesz skrypty do obsługi BD, które wywołujesz asynchronicznie (bez odświeżania strony) dzięki AJAX!

0

No to mam dużo nauki, bo najbardziej skomplikowaną funkcją (pseudo)AJAXową jakiej używałem do tej pory, było zdarzenie load() jQUERY :). Możesz mi na koniec polecić jakąś książkę lub stronę internetową o AJAXie?

0

tak chcę dodac nowy post bo ten wątek jest wart bumpa zwlaszcza ze duzo ludzi ma z tym problem na androidzie

0

A nie lepiej zamiast ajax + php + json + odświerzanie co chwilę (co nie jest dobrym pomysłem) użyć websocketa, nawet php'owego? Dane poszczególnych konwersacji trzymać w tablicy ze wszystkimi konwersacjami. Szybsze, prostsze i wygodniejsze przy modernizacji.

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