1)
Зачем заморачиваться? Запустите ваш демон как отдельный процесс и используйте socket_select () (или stream_select) для прослушивания запросов.
См. Код Алексея Заппарова здесь для получения готового решения.
2)
Зачем мучаться с болью написания собственного кода сокета - используйте [x] inetd для управления серверами и выполняйте все коммуникации на stdio (обратите внимание, что в отличие от решения 1, для каждого клиента будет отдельный процесс - поэтому код обработки быть неблокирующим)
-
Вы правы, говоря, что ресурсы PHP не должны быть доступны в раздвоенном процессе - но не указывайте, как это связано с вашей текущей проблемой. Это просто для того, чтобы вы могли посчитать количество соединений? Или что-то другое? В первом случае это намного проще. Используя решение 1, просто увеличивайте и уменьшайте переменную счетчика, когда клиенты подключаются / отключаются. В случае 2 - тот же подход, но сохраняйте переменную в файле данных / базе данных (вы также можете хранить информацию о соединениях и проводить периодические проверки). В качестве альтернативы ограничьте соединения на брандмауэре.
С