Таймаут в socket_select

EugeneVB

Новичок
Всем привет!
Делаю сокет-сервер, в бесконечном цикле вызываю socket_select с таймаутом, равным нулю, в следствии чего выполнение кода останавливается до событий на сокетах.
Тут появилась потребность периодично(например раз в секунду) выполнять действие.
Можно вызывать socket_select с таймаутом 1, тогда каждую секунду будет выполняться итерация цикла и я смогу сделать необходимые действия.
Вопрос в том, сталкивался ли кто с таким использованием socket_select, не будут ли терятся изменения на сокетах?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Тут появилась потребность периодично(например раз в секунду) выполнять действие.
Можно вызывать socket_select с таймаутом 1, тогда каждую секунду будет выполняться итерация цикла и я смогу сделать необходимые действия.
Вопрос в том, сталкивался ли кто с таким использованием socket_select, не будут ли терятся изменения на сокетах?
Так делать можно, но не нужно - предпочтительней вынести необходимые действия в отдельный процесс, мне кажется.
 

tz-lom

Продвинутый новичок
Всем привет!
Делаю сокет-сервер, в бесконечном цикле вызываю socket_select с таймаутом, равным нулю, в следствии чего выполнение кода останавливается до событий на сокетах.
Тут появилась потребность периодично(например раз в секунду) выполнять действие.
Можно вызывать socket_select с таймаутом 1, тогда каждую секунду будет выполняться итерация цикла и я смогу сделать необходимые действия.
Вопрос в том, сталкивался ли кто с таким использованием socket_select, не будут ли терятся изменения на сокетах?
Теряться не будут,но лучше заведи отдельную нить
 

EugeneVB

Новичок
отдельный процесс конечно дело хорошее, тоже думал об этом,
но никогда не сталкивался с межпроцессным взаимодействием, даже не представляю каким образом это реализовать,
думал передавать данные через бд, но тогда опять же необходимо периодично проверять обновления
 

EugeneVB

Новичок
Или вы имели ввиду pcntl_fork, но пишут, что его использование не желательно
 

fixxxer

К.О.
Партнер клуба
Если процесс не длительный, можно просто использовать неблокирующие сокеты.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да, неблокирующий режим работает хорошо, только обработку данных надо делать аккуратно, чтобы не задерживать обработку соединений
 
Сверху