![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Как определить, что клиент разорвал соединение с сервером?
Не могу я этого сделать в пхп, хоть тресни. А пингами понгами кидаться не хочу |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Немного подробнее о проблеме
У меня есть демон на пхп, который прослушивает порт. К нему конектятся клиенты по сокету. Как мне узнать, что клиет разорвал соединение? Я не могу найти в мануале, как узнать, жив ли сокет или нет. При разрыве ошибку не показывает. Понимает только тогда, когда не могу записать ничего в сокет |
|
|||||
|
socket_get_status() ?
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Цитата:
|
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Фуххххххххххххх. Разобрался!
![]() //Reads data from the buffer
function read(){
$read = array($this->socket);
$res = socket_select($read, $w = null, $e = null, 0);
if (!$res){
return;
}
$tmp = socket_read($this->socket, 10240);
if (($tmp === FALSE && $this->getError() == 10053) || strlen($tmp) == 0){
//Handle event
if ($this->handler){
$this->handler->handleEvent('onDisconnect');
}
}
//Handle event
if ($this->handler){
$this->handler->handleEvent('onData', $tmp);
}
return $tmp;
}
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 14
|
Каким вообще образом организовуется толковый сокет-сервер на пхп ?
Может у кого есть ссылка на описание с примером ? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 14
|
Цитата:
Шерлок Холмс и Доктор Ватсон путешествуя на воздушном шаре попали в ураган, когда погода угомонилась и стало видно землю они обнаружили что потерялись.. Холмс увидел человека в низу и крикнул: - Ей, где мы находимся ? - На воздушном шаре. - Ответил человек. - Это программист. - Сказал Холмс, Ватсону. - Как вы догадались Холмс ? - Только программист может дать на четко поставленый вопрос абсолютно точный ответ, который вам ничего не даст. Сори за флуд, не удержался ) И все же, каким образом нужно реализовать и запустить пхп-скрипт, что бы получился сокет сервер ? При этом система централизована, сервер не обращаетса к клиентам, лишь клиенты ходят на сервер, заберают и отдают что надо и на этом все. Гораздо проще такую схема реализовать без сокетов, через простое обращение по урл, но частота обращений клиента достаточно высокая (минимум 1 раз/сек), думаю з сокетами будет оптимальние. Поправте меня плз если я ошибаюсь. Последний раз редактировалось SSka; 30.06.2007 в 14:48. |
|
|||||
|
Конечно ошибаешься. Ты почему-то думаешь, что твой самописный (причем если у тебя есть вопросы - то ты не очень хорошо разбираешься как это делается. А у нас нет толковых ответов, то есть мы тоже не сильно скилованные люди) сервер будет надежнее, быстрее и устойчивее апача и прочих веб-серверов, который разрабатывается уже сто лет как.
Кроме того, скриптовый язык никогда не сравняется в производительности с компилированным кодом. ЗЫ. 1 запрос в секунду - это совсем не критичная нагрузка.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 14
|
Спасибо за ответ, уж думал не дождусь.
По поводу устойчивости согласен, за производительность вы ошибаетесь, при линковой организации будет вызыватся тот же скрипт, только еще запрос пройдет через пару инстанций + без сокетов будет кушатся больше трафика на заголовки и прочие ньюансы, так при сокетной реализации, образуетса логический канал на более низком уровне протокола, это в свою очередь должно экономить кой какие байты. "ЗЫ. 1 запрос в секунду - это совсем не критичная нагрузка." - надеюсь что так и есть, иначе прийдетса все переписывать ) |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|