Capacidade PHP para lidar com múltiplas conexões TCP?

Eu queria saber se o PHP pode atuar como um servidor em uma porta TCP? Quantas ligações IDLE podem suportar um servidor de RAM de 1 GB? O PHP pode receber muitas conexões para uma porta TCP (como o apache na porta 80?)

Se eu tiver um cliente conectado ao soquete aberto pelo PHP, como posso enviar dados para ele? (por exemplo, a.php está ouvindo na porta 5000, algum cliente está conectado, mais tarde, b.php precisa enviar algo para esse cliente, bem, pressione uma mensagem?)

Ou devo usar o UDP em vez disso?

Amigo, meu primeiro conselho é que, mesmo que o PHP possa fazer isso nativamente. O PHP não é a melhor tecnologia para implementar o TCP Sockets Server. A razão é porque lembre-se que o php tem max_execution_time para cada script e que um servidor seja executado para sempre exigirá definir esse valor para 0, o que significa para sempre. A quantidade de conexões de 1gb do servidor RAM pode ser gerenciada depende de quanto ram e processador consumam cada processo php.

Mas, de qualquer forma, se você decidir fazê-lo usando php. Sim, você pode construir com php um servidor de soquete tcp asynchronous.

Basta criar um soquete mestre ouvindo 5000 (por exemplo). E para cada sockets de clientes que se conectam com este soquete mestre, crie um soquete filho com uma porta livre aleatória (selecionada pelos os) para cada conexão de input e você pode começar a falar com o soquete filho ao liberar o mestre para continuar a ouvir outra input conexões.