![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 16.12.2005 Skąd: Warszawa, Kabaty Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Piszę w PHP prosty serwer działający po socketach. Schemat działania jest prosty: 1) klient wysyła ciąg znaków z komendą, 2) serwer odbiera ciąg, 3) serwer "myśli" przez kilkanaście-kilkadziesiąt sekund, 4) serwer wysyła odpowiedź, 5) klient odbiera odpowiedź i zamyka połączenie. Sęk w tym, że mielenie w punkcie trzecim może trwać dowolnie długo i klient może w międzyczasie zamknąć połączenie, a odpowiedź zostanie wysłana na zamknięty port. Zgodnie z manualem funkcja socket_write() powinna zwrócić false w przypadku, gdy nie doszło do zapisania. Niestety, nigdy nie zwraca false, nawet jeśli klient w międzyczasie przerwie połączenie. Wymyśliłem obejście z funkcją socket_shutdown, ale to wymusza schemat: jedno połączenie, jedno zapytanie, jedna odpowiedź. Może ktoś ma pomysł co z tym fantem zrobić?
Ten post edytował DzikiLis 4.11.2007, 13:22:21 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 0 Dołączył: 16.04.2005 Skąd: Białowieża Ostrzeżenie: (0%) ![]() ![]() |
Może trochę nie na miejscu... ale po cholerę serwer w PHP? To jest język skryptowy i prawie nijak się do tego nie nadaje. Odsyłam do C++
![]() Ten post edytował rolnix 4.11.2007, 18:10:59 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 16.12.2005 Skąd: Warszawa, Kabaty Ostrzeżenie: (0%) ![]() ![]() |
Może trochę nie na miejscu... ale po cholerę serwer w PHP? To jest język skryptowy i prawie nijak się do tego nie nadaje. Odsyłam do C++ ![]() Jasne, C++ z pewnością jest lepszy do tego typu zastosowań, ale w przypadku tego projektu spora część logiki biznesowej (to "mielenie") jest napisana w PHP. Serwer na socketach jest tylko małym dodatkiem do aplikacji internetowej, pozwalającym na dostarczanie danych do innego systemu. Przepisywanie części logiki w C++ tylko po to by chodziło szybciej i nie było językiem skryptowym niepotrzebnie narazi klienta na dodatkowe koszty. Na razie szukam rozwiązania "wystarczająco dobrego", a jeśli serwer na socketach odniesie sukces i zacznie generować przychody, zaproponuję klientowi przejście na C++. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 19:04 |