Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
socket php
|
|||
|---|---|---|---|
|
#18+
Нужна помощь, а точнее разяснение - как работать с сокетами. 1)не могу понять, блокирующий и не блокирующий режим. если я вызываю socket_read() в блокирующем режиме, то скрипт на этой команде замирает, пока не прочитает чтото, как я понял. тогда возникает вопрос, а в неблокирующем - что? куда денуться потом прочитанные данные, если выполнение кода пошло дальше. аналогично запись в неблокрующем режиме - данные будут ити очередью как отправляли. 2)но первое ещо ладно, а вот в упор не понимаю функцию чтения в бинарном режиме при блокирующем сокете. вот начал скрипт читать, подвис на команде этой - и висит вечно если ему ничего не передал другой процесс - так зачем такое нужно? у себя опробовал, несолько готовых примеров сервер+клиент. везде одно и тоже. чтение блокирующим сокетом в бинарном режиме по типу Код: php 1. и получаеться следующее - сервер читая запрос клиента, когда вычитал всё виснет на таком чтении. клиент, послав запрос и начав читать тоже виснет. что за ерунда? как быть?! 3)socket_select() - работа функции понятна, но как указано в документации, если мы с помощью её получили сокет, на котором чтото можно прочитать, прежде чем использовать этот же сокет повторно в сокет_селект, из негу нужно всё вычитать. все вычитывание - пока читаеться, читать - и опять приходим к зависанию как в п.2. =========== есть люди которые работали с этим? ЗЫ лично для меня не надо тратить время и писать код сервера и клиента в пример. достаточно на словах обяснить - что я не понял(или упустил) в работе с сокетами. как при блокирующем сокете - не зависнуть?! как использовать не блокирующие. (таже запись, ну записали мы не в блокирующем режиме, и как нам знать, когда начинать читать ответ в неблокирующем?!) весь день промучался, так и не получил желаемой работы: сервер вечно слушает, каждый кто ему написал получает приветсвие, отвечает запросом, и должен получить овтет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 02:06 |
|
||
|
socket php
|
|||
|---|---|---|---|
|
#18+
alex564657498765453как при блокирующем сокете - не зависнуть?! Знать, сколько должно быть получено байтов, и читать ровно столько. как использовать не блокирующие. (таже запись, ну записали мы не в блокирующем режиме, и как нам знать, когда начинать читать ответ в неблокирующем?!) select + read ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 10:51 |
|
||
|
socket php
|
|||
|---|---|---|---|
|
#18+
спасибо. а ещо вопросик. А таймаутом как пользоваться?(таймаут на сокете) А то у меня получилось следующее блокирующий сокет с таймаутом, завис на функции чтения(как и должно быть) но по истечению времени висит дальше, а когда всетаки чтото щитал, выскочила ошибка о превышении таймаута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38452635&tid=1463307]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 365ms |

| 0 / 0 |
