Чат на сокетах

Статус
В этой теме нельзя размещать новые ответы.

Acidrayne

Местный житель
Регистрация
30 Сен 2007
Сообщения
296
Реакции
20
Добрый день пишу чат на сокетах, серверная часть написана пишу клиентскую и тут столкнулся с такой проблемой: работа функции socket_read();

PHP:
 global $socket;
        socket_write($socket, $msg, strlen($msg));
        echo "сообщение серверу отправленно.\n";
        $out = socket_read($socket, 1024);
        if ($out == FALSE){socket_last_error(); break;}
        echo $out;

Тоесть пока на сервере есть сообщения для чтени она работает нормально, как только сообщения заканчиваются а читаю сокет я раз в 10 секунд, то скрипт подвисает! помогите разоюбраться с моей проблемой
 
Потому что socket_read() ждет новые данные, если очередь пуста. И не закончит выполняться, пока не появится что читать. Читай про неблокирующие сокеты и php.net/socket_set_nonblock
 
Не могли бы вы привести пример, потому как использование этой функции идет при условии использования функций socket_listen и socket_bind. Если кто занет подскажите как на клинте реализовать постоянное прослушивание сокета к которому мы подключены и как только там появятся данные сразу их выводить ???
 
Не могли бы вы привести пример, потому как использование этой функции идет при условии использования функций socket_listen и socket_bind. Если кто занет подскажите как на клинте реализовать постоянное прослушивание сокета к которому мы подключены и как только там появятся данные сразу их выводить ???

Идем в гугл, пишем "неблокирующие сокеты". Получаем
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
...

Потом идем в codesearch, вбиваем socket_read socket_set_nonblock lang:php - получаем тьму готовых исходников (рабочих!). Выбирай любой.

На крайняк набираем в адресной строке php.net/socket_read и ищем на странице (по Ctrl+F) слово "nonblock". Видим комент от некоего florin, начинающийся со слов Here is a working solution for using socket_read in nonblocking mode

Короче было бы желание..
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху