Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ajax & sockets

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Slavenin
Отправлено: 04 Октября, 2012 - 12:00:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Всем доброго времени суток!
Написал на php сокет-сервер. Все здорово, все работает... При прямом обращении по нужным адресам.

Дальше начинается "уличная магия"... В том случае, если сервер уже запущен, когда я дергаю его ajax`ом все хорошо. Если же сервер не запущен, то я его запускаю и пробую снова чего-нибудь ему отправить. Он запускается(вижу в логах), но... и это самое странное, даже после принудительного завершения ajax-запроса(на запуск) второй(с сообщением до сервера не доходит)... тупо висит в сетевой активности, такое ощущение, что он встает в некую очередь и ждет завершения скрипта сервера, так как если сервак тормознуть, то запрос выполняется.

Помогите пожалуйста, второй день не могу понять, что происходит...

Сервер
Спойлер (Отобразить)


клиент

Спойлер (Отобразить)


js

Спойлер (Отобразить)
 
 Top
Slavenin
Отправлено: 04 Октября, 2012 - 14:46:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




победа но из разряда "где мой бубен"... Проблема решается путем запуска сервера в отдельном потоке через stream_socket_client с отключенной блокировкой stream_set_blocking( $s, 0 ); в результате сервер запускается в отдельном потоке, скрипт не ждет ответа и удачно завершается, можно слать запросы...

вот бы еще кто-то просветил какого ... нужно серверу без этого шаманства
 
 Top
keltstr
Отправлено: 05 Января, 2013 - 00:52:21
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




сервер на win ? режим PHP ?
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Января, 2013 - 01:13:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Slavenin пишет:
и пробую снова чего-нибудь ему отправить. Он запускается(вижу в логах)
Вот тут подробнее пожалуйста о последовательности действий, я не понял.
Но по сути, да, если вы проведете эксперимент и будете коннектиться до порта, на котором висит сокет, четез браузер напрямую, быстро обновляя F5, то увидите, что счетчик обращений показывает не корректные результаты. Дело в том что браузер по причине "оптимизации" (тваюмать) его работы не ждет синхронизированного ответа на конкретно отправленный запрос, а принимает тот, который пришел от сервера сейчас, и ему не важно, что от сервера летят еще пять ответов.
Лечение отсутствует. Ставьте памятник великим кодерам хрома, мазилы, оперы и с некоторых пор осла... вуаля.

Хотя более низкий уровень, TCP, как бы обязывает синхронизацию пакетов Закатив глазки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB