Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [teoria] Socket a wiele połączeń
PMadej
post 12.12.2005, 15:15:01
Post #1


Vice-Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 395
Pomógł: 0
Dołączył: 7.08.2003
Skąd: Kielce

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


Dawno tu nie pisałem ale nurtuje mnie jeden problem,

Swego czasu korzystałem ze skryptu Daemona napisanego w php przez Setha i dołączyłem sobie do niego obsługę i nasłuchiwanie socketów. Jednak miałem z tym 2 problemy

1) skrypt przy nasłuchiwaniu wykonywał odczyt z socketa w pętli nieskończonej co w dziwny sposób potrafiło zajechać procesor na maxa. Tu pojawia się pierwsze pytanie jak zoptymalizować skrypt, żeby zmniejszyć do minimum wykorzystanie procesora, a jednocześnie nie spowodować tego, że połączenie zostanie odrzucone (np sleep() ) Chyba że nie będzie i sleep tu się sprawdza.

2) skrypt otwiera tylko jeden socket na danym porcie i przyjmuje tylko jedno połączenie (z tego zrozumiałem tak jest to zaimplementowane w php) i dopiero po zakończeniu tego połączenia może ustanowić kolejne. Jakieś teoretyczne propozycje jak obsłużyć wiele połączeń?

Narazie nie podaje kodu bo uważam te rozważania za bardziej teoretyczne niż prośbę o konkretne rozwiązania, choć przykłady funkcji które mógłbym zastosować są jak najbardziej pożądane.

Pozdrawiam
PMadej


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
dr_bonzo
post 12.12.2005, 15:20:04
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
socket_select --  Runs the select() system call on the given arrays of sockets with a specified timeout

zwraca ci socket z ktorego mozesz odczytywac

Cytat
After the socket socket has been created using socket_create(), bound to a name with socket_bind(), and told to listen for connections with socket_listen(), this function will accept incoming connections on that socket. Once a successful connection is made, a new socket resource is returned, which may be used for communication


resource socket_accept ( resource socket ) zwroci ci nowy socket po zaakceptoaniu polaczenia.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
PMadej
post 13.12.2005, 11:27:04
Post #3


Vice-Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 395
Pomógł: 0
Dołączył: 7.08.2003
Skąd: Kielce

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


W manualu o socketach po przejrzeniu wszystkich funkcji z nimi związanych natrafiłem na świetny przykład który pozwoli mi zrozumieć działanie socketów w php i rozwiązać w 100% mój problem.
Dla zainteresowanych zamieszczam link do ww. przykładu. jest to czat na zasadzie broadcastu: przyklad


--------------------
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:56