| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Сеть > Помогите подружиться с socket_select |
| Автор: lollollollol 29.3.2014, 20:42 | ||||
Здравствуйте, пожалуйста, помогите понять как работает функция socket_select?
Я понял так: в переменную $read помещаем массив ресурсов, созданных и подготовленных сокетов
После того как функция socket_select будет выполнена, переменная $num_changed будет содержать количество изменённых сокетов. А вот дальше слошные вопросы, ответы на которые я не смог найти, начну по порядку: 1. Как работает таймаут? Функция ждёт указанное время, а потом отдаёт результат, или это максимальное время которое ожидает функция изменений в сокете, в случае если изменений нет - вернёт false? 2. Как работают переменные $read, $write, $except, с $read понятно, а вот с $write нет - как функция понимает на какой сокет данные хотят придти, а где ожидают данных? Или может быть в обе переменные нужно отдавать одинаковые массив, и в котором массиве будет наш сокет, те действия и следует выполнять? 3. При открытии сокета на 2 портах и более, при получении информации что нужно читать сокет ($read) я вызываю socket_accept, если есть значения в переменной $write, тоже нужно его вызывать, или там могут быть значения исключительно уже вызваные socket_accept'ом? 4. Когда на один порт поступает несколько подключений, вызывается множество socket_accept, все они записываются в массив $read, как потом отличить, нужно ли вызывать accept для чтения из них? 5. А как понять на какой порт пришли данные, если допустим у нас по 20 активных подключений с 3-х сокетов? У меня в голове какая-то каша, возможно я не корректно сформулировал вопрос, прошу внести хоть какую-то ясность в вопросы, заранее спасибо всем кто откликнется! |
| Автор: lollollollol 30.3.2014, 08:43 |
| Ау, программисты, пожалуйста:) |
| Автор: lollollollol 5.4.2014, 11:40 |
| ап |
| Автор: lollollollol 8.4.2014, 08:32 |
| ап |