Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
Всем доброго времени суток!
Написал на php сокет-сервер. Все здорово, все работает... При прямом обращении по нужным адресам.
Дальше начинается "уличная магия"... В том случае, если сервер уже запущен, когда я дергаю его ajax`ом все хорошо. Если же сервер не запущен, то я его запускаю и пробую снова чего-нибудь ему отправить. Он запускается(вижу в логах), но... и это самое странное, даже после принудительного завершения ajax-запроса(на запуск) второй(с сообщением до сервера не доходит)... тупо висит в сетевой активности, такое ощущение, что он встает в некую очередь и ждет завершения скрипта сервера, так как если сервак тормознуть, то запрос выполняется.
Помогите пожалуйста, второй день не могу понять, что происходит...
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
победа но из разряда "где мой бубен"... Проблема решается путем запуска сервера в отдельном потоке через stream_socket_client с отключенной блокировкой stream_set_blocking( $s, 0 ); в результате сервер запускается в отдельном потоке, скрипт не ждет ответа и удачно завершается, можно слать запросы...
вот бы еще кто-то просветил какого ... нужно серверу без этого шаманства
Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
сервер на win ? режим PHP ?
DeepVarvar
Отправлено: 05 Января, 2013 - 01:13:28
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Slavenin пишет:
и пробую снова чего-нибудь ему отправить. Он запускается(вижу в логах)
Вот тут подробнее пожалуйста о последовательности действий, я не понял.
Но по сути, да, если вы проведете эксперимент и будете коннектиться до порта, на котором висит сокет, четез браузер напрямую, быстро обновляя F5, то увидите, что счетчик обращений показывает не корректные результаты. Дело в том что браузер по причине "оптимизации" (тваюмать) его работы не ждет синхронизированного ответа на конкретно отправленный запрос, а принимает тот, который пришел от сервера сейчас, и ему не важно, что от сервера летят еще пять ответов.
Лечение отсутствует. Ставьте памятник великим кодерам хрома, мазилы, оперы и с некоторых пор осла... вуаля.
Хотя более низкий уровень, TCP, как бы обязывает синхронизацию пакетов
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.