![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 0 Dołączył: 27.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czy istnieje możliwość przechwycenia połączenia w php. Używam comet'a.
Przykład: 1. Klient wchodzi na strone 2. Wysyłane jest zapytanie do serwera (serwer nie udziela odpowiedzi dzięki temu jest utrzymywane połączenie z serwerem) 3. Po stronie serwera w skrypcie do którego połączył się klient. Do tabeli z grupami użytkowników dodawane jest połączenie Jak przechwycić połączenie i np dla kazdego z połączeń zrobić echo? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
http://wilgucki.blogspot.com/2010/04/komun...m-w-czasie.html
Niestety nie wiem na ile jest to wydajne. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Jak przechwycić połączenie i np dla kazdego z połączeń zrobić echo? Socketsw pytaniu nie opisałeś technologi - trochę napisałeś o "przechwytywaniu połączenia" więc zapoznaj się z tym działem... ale odpowiedzi można jeszcze inaczej udzielać na zasadzie "kolekcji" w bazie [czy gdzie tam chcesz]... w komentarzach w powyższym linku pisałem jak zrobić by AJAX dostawał odpowiedź odrazu a nie co sekundę odpytywać serwer [to już nie są sockety i nie pisałem o przechwytywaniu polączenia]... ale np. zamiast kolekcji to możesz skryptem zrobić połączenie do gniazda socketu i demonem od razu pisać do tego gniazda socketa [pierwszy skrypt łączący się do gniazda będzie czekał na wynik np. funkcji fsockopen [lub pfsockopen - oczywiście jest masa innych funkcji - jakoś ja te preferuję...] i dopiero po otrzymaniu odpowiedzi z demona skrypt pujdzie dalej i z buforu puścisz odpowiedź... tutaj też jest bardziej o "kolekcji" odpowiedzi w bazie: http://www.niusy.bajery.pl/thread/news.one....lang.php/57266 - w tym rozwiązaniu skrypt który ma dać odpowiedź do AJAX'a nie udziela jej np odrazu i działa w pętli while(true){sprawdzam i jak coś beak; sleep(1); // tu sekundę - ale masz funkcje nanosleep i inne - po to tylko, żeby nie zajechać serwa tym while(true) } // no i zwolnienie buforu wyjścia... a konstrukcja na sockety to odpytujesz tylko gniazdo [nie w pętli] - dostaniesz odpowiedź jedziesz dalej... tu choć mało może perzejrzyście o socketach blog: Serwer gry. Część pierwsza. Serwer gry. Część druga -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 10:36 |