Я не уверен, что вам реально нужно 30(!) потоков. Если вам нужно одновременно обрабатывать 30 подключений по http, то с вероятностью в 90% вас устроит один процесс, работающий в асинхронной модели. Для этого хватит и php. Посмотрите в сторону reactphp или amphp.
Для оставшихся 10% случаев, а может даже и меньше, вам потребуется действительно многопоточность, чтобы как-то разложить нагрузку на ядра процессора. Но это нужно лишь в том случае, если каждое подключение после получения данных производит какую-то очень ресурсоёмкую операцию, блокирующую всё, что только можно, то есть асинхронная модель уже становится бесполезной. В этом случае тоже можно и на php написать, например с помощью icicleio/concurrent, но наверное проще было бы на Go с точки зрения настройки среды выполнения.