Есть ли в PHP функции для подписки или проще говоря для массового прослушивания сокетов?
При программировании сетевых приложений на C++ или Delphi которые работают с несколькими сокетами одновременно, есть возможность создать переменную в которой будет храниться список сетевых клиентских сокетов, а затем используя эту переменную запросить информацию о том произошло ли на этих сокетах какое либо событие, таким образом не приходится зайдействовать API функции для того чтобы к примеру узнать пришло ли на каждый из сокетов какое либо сообщение. Если событие произошло то затем можно выяснить на каких именно сокетах.
Мой вопрос: есть ли какие либо аналогичные функции у PHP. В моей задаче мне требуется одновременно держать соединение с примерно 10 сервисами, получается что сейчас я в цикле проверяю для каждого сокета(которые работают в неблокируемом режиме) отдельно пришли ли на него какие либо данные, и хотя нагрузка которую создаёт такой скрипт по тестам не большая, мне же всё же хотелось бы попробовать оптимизировать и исключить запросы к API операционной системы в которых возможно нет необходимости.
Вот пример как это может выглядеть в Delphi:
FD_SET(socketsWAPI[num],FDSet1);//передаём сокет который нужно слушать в переменную FDSet1
selectResult:= select(0,@FDSet1,nil,nil,@timeFDOperation);//в данном случаи эта строка проверяет произошло ли на каком нибудь из сокетов содержащихся в FDSet1 событие подключения к хосту, другие события в данном случаи не отслеживаются, поскольку 3-ий и 4-ый параметры переданы как nil, в @timeFDOperation указано время за которое если не произойдёт искомых событий на сокетах продолжится выполнение программы
if (selectResult > 0) then//после выхода из строки выше проверяем произошло ли событие на сеокете, если нет значит выход из строки произошёл по таймеру и следовательно событий в этот промежуток времени не было