Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Chat - Odswiezanie widoku
wertyg
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.07.2012

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


Probuje napisac chat ala shoutbox i zadaje sobie pytanie czy to wykonalne bez uzycia javy ?

Moj problem polega na tym ze zalogowani uzytkownicy zobacza tekst napisany przez innych uzytkownikow dopiero wtedy gdy sami cos napisza (ewentualnie wykonaja jakas inna akcje).

Ogolnie dziala on tak:
-Akcja:uzytkownik wpisuje komentarz do pola fromularza wciska send
-Przechwytuje send
-Zapisuje komentarz do bazy mysql
-Czytam z bazy mysql komenatrze
-Wyswietlam je
-Oczekuje na akcje

Czyli nie jestem w stanie wyswietlac ich na biezaco, gdy uzytkownikow pojawi sie wiecej (Uzytkownik1 poki nie wcisnie send nie zobaczy tego co napisal Uzytkownik2).

Widok musialby pobierac dane z bazy samodzielnie bez oczekiwania na akcje uzytkownika i nie mam pomyslu jak to zrobic.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
redeemer
post
Post #2





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

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


Jest to wykonalne bez użycia javy , jednak javascript jest tutaj wskazany. Mógłbyś jeszcze jakoś pokombinować z meta refresh (nawet w osobnym iframe), ale najlepiej będzie to zaciągnąć ajaxowo, czyli z użyciem javascript. Również przy użyciu tej techniki zrealizowałbym wysyłanie wiadomości, żeby nie przeładowywać całej strony, jak prawdopodobnie masz w tej chwili.


--------------------
Go to the top of the page
+Quote Post
ixox
post
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 13
Dołączył: 8.09.2012

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


Kiedyś robiłem podobną rzecz, tzn Chat. Zrobiłem to w ajaxie(js) i php gdzie sprawdzałem co sekunde czy nie ma nowej wiadomości. Więc jedynie coś w tym stylu.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Google: Bidirectional AJAX, HTTP long polling
Go to the top of the page
+Quote Post
wertyg
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.07.2012

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


Probowalem troche z tym odswiezaniem co sekunde ale za bardzo mnie denerwuje takie mryganie, trzeba bedzie jednak tego ajaxa sprobowac kiedys bo na razie to pojecia o javie nie mam.
W kazdym razie dzieki za pomoc i pokierowanie na wlasciwe tory
Go to the top of the page
+Quote Post
redeemer
post
Post #6





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

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


javascript to nie java!


--------------------
Go to the top of the page
+Quote Post
markonix
post
Post #7





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

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


Pierwszy czat, który miał dość sporo zalet zbudowałem w oparciu o jQuery load.
http://api.jquery.com/load/

Odświeżanie co np. 3-4 sekundy w zupełności starczy, implementacja szalenie prosta sprowadza się do 3 linijek jQuery i oczywiście zapytania i widoku wpisów.
Potem napisałem oparty o pobieranie ostatnich wiadomości ale szczerze to tamten mimo większego obciążenie (pobiera wszystkie wpisy zamiast nowych) to naprawdę dużo ułatwiał np. moderacje (moderacja widziana automatycznie), czyszczenie rozmowy (teraz wiadomości dodaje na początek, ale nie dopisałem usuwania).

Jeżeli nie przewidujesz wielkiego portalu to obciążenie takiego czatu wg mnie jest znikome jeżeli wszystko jest napisane jak trzeba.
Troszkę inaczej jakby czat/shoutbox był widoczny dla każdego odwiedzającego wink.gif



--------------------
Go to the top of the page
+Quote Post
sebekzosw
post
Post #8





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


ciekawi mnie Bidirectional AJAX, HTTP long polling. Macie polskie artykuły na ten temat, bo nic nie znalazłem w Google smile.gif
Go to the top of the page
+Quote Post
wertyg
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.07.2012

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


Udalo mi sie jakims cudem zrobic to w Ajaxie (w ogole nie znam javascript) ustawilem odswiezanie co sekunde i zastanawiam sie przy ilu uzytkownikach zarznie mi czat, bo co sekunda czytam 15 ostatnich wpisow z bazy (na jednego usera:D)

Moze lepiej byloby to zrobic przez jakis cache? Byloby szybciej ?

Jesli chodzi o Ajaxa to zauwazylem jedna rzecz przypadkowo, gdy uruchomilem starego xp i tam poinstalowane mialem jakies zdeaktualizowane przegladarki + jave, dzialy sie wowczas rozne cuda:
- w przypadku opery: po odswiezaniu ajaxowym widok nie pokazywal sie wcale
- w przypadku firefoxa bardzo widoczne bylo odswiezanie (mruganie)

Natomiast pod Win7 z zaktualizowana Java,Firefoxem, Opera, odswiezanie chodzi ladnie we wszystkich przegladarkach.
Za wyjatkiem IE8 ktory przy kazdym odswiezaniu pokazuje zdeaktualizowany widok z pierwszego uruchomienia skryptu. (?)

Ten post edytował wertyg 9.10.2012, 22:14:19
Go to the top of the page
+Quote Post
sebekzosw
post
Post #10





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Jest to bardzo proste do obejścia. Robisz plik PHP z pętlą która się wykona 120 razy i po każdym "obrocie" wstrzymujesz skrypt sleep(1). W pętli pobierasz po prostu rekordy odpowiednie, zapisujesz do pliku txt i gotowe. Ustawiasz w cronie wykonywanie co 2 min smile.gif chyba, że masz możliwość wykonywania crona co sekundę to wtedy nie musisz używać pętli i funkcji sleep

a teraz w jQuery pobierasz ten plik txt za pomocą i tyle smile.gif
Go to the top of the page
+Quote Post
abort
post
Post #11





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Cytat(sebekzosw @ 18.10.2012, 16:50:30 ) *
chyba, że masz możliwość wykonywania crona co sekundę to wtedy nie musisz używać pętli i funkcji sleep

Nie ma takiej możliwości. Taka możliwość nie istnieje. Technicznie nie istnieje. Dla nikogo. Na żadnym uniksie. End of story.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 18:43