Q:

Número de requisições simultâneas que um servidor PHP suporta

Vamos supor que tenho um servidor com um processador i7 com 4 núcleos/8 threads.
Em uma arquitetura multi-thread, assumindo que se crie uma thread por requisição, apenas será permitido 8 requisições simultâneas, uma vez que o processador possui 8 threads?
Se os servidores PHP são multi-thread, como conseguem responder a milhares de conexões simultâneas?

A:

Não fazem. Simultâneo só a quantidade de processadores existentes. Existe uma ilusão de simultaneidade, como ocorre no seu computador agora. Tem centenas ou milhares de processos rodando e parece que tudo está simultâneo, mas não está. Vai havendo troca de execução.
O sistema operacional vai agendando uma thread de cada vez em cada processador existente. Como a troca ocorre muito rápido parece superficialmente que estão executando simultaneamente, mas se fizer um teste básico de tempo verá que não é bem assim.
Estamos falando de processador. Acontece que grande parte das tarefas envolvem entrada e saída, então enquanto está lendo ou escrevendo dados externamente ao processador este fica ocioso então ter várias threads, bem mais que estas 8 pode ser útil já que enquanto uma thread espera o recurso externo responder outra que não está dependendo de recurso externo pode executar, o que ajuda dar a ilusão de simultaneidade.
Na verdade hoje é mais comum aplicações trabalharem assincronamente e não depender tanto assim de threads explícitas para compensar o uso de acessos externos.
De qualquer forma tenho minhas dúvidas se um único servidor consegue atender milhares de requisições "simultâneas" com PHP.
O Node limita à quantidade virtual de CPUs porque ele trabalha assincronamente, não tem porque usar threads em excesso porque o processador é acionado conforme a necessidade, não precisa haver concorrência de recursos de CPU. Ele enfileira as requisições em excesso já que não tem como atender mais que a capacidade do hardware, assim economiza com o gerenciamento e por isso escala muito melhor, fora o fato que o aproveitamento não fica tanto na "sorte" do momento.
O Node ficou conhecido por fazer isto, mas todas tecnologias fazem isto hoje, em geral usam a libuv. Em geral as pessoas não entendem muito do que estão fazendo, elas leem algo e acham que é aquilo que está escrito sem questionar, sem entender o que está ocorrendo ali.
Leia É sempre garantido que uma aplicação com múltiplas threads rode mais rápido que usando uma única thread? para entender melhor.

