Se o PHP Engine já estiver executando um script no servidor, o que aconteceria com outras solicitações simultâneas do navegador para o mesmo script?
- Os pedidos ficarão na fila?
- Eles serão ignorados?
- Cada solicitação terá sua própria instância de script?
- Alguma outra possibilidade?
Respostas:
O servidor, dependendo de sua configuração, geralmente pode atender centenas de solicitações ao mesmo tempo - se estiver usando Apache, a
MaxClients
opção de configuração é a que diz:O fato de dois clientes solicitarem a mesma página não é um problema.
Então :
Não ; exceto se :
MaxClients
processos ativos atualmente - veja a citação do manual do Apache antes.Não: isso significa que apenas um usuário pode usar um site ao mesmo tempo; isso não seria muito bom, seria?
Se fosse o caso, eu não poderia postar essa resposta, se você estivesse apertando F5 no mesmo momento para ver se alguém atendia!
(Bem, SO não está em PHP, mas os princípios são os mesmos)
Sim ^^
edite depois de editar o OP e o comentário:
Não existe " instância de script ": em poucas palavras, o que está acontecendo onde uma solicitação a um script é feita é:
Na verdade, você pode ter dois usuários enviando uma solicitação para o mesmo script PHP (ou para scripts PHP distintos que incluem o mesmo arquivo PHP) ; isso definitivamente não é um problema, ou nenhum dos sites em que trabalhei funcionaria!
fonte
Se 2 clientes chamam o servidor ao mesmo tempo, o servidor provavelmente é capaz de responder a ambos os clientes quase simultaneamente. Os clientes aqui, eu os defino no nível do navegador.
Quer dizer que na mesma máquina, se você estiver usando 2 navegadores para carregar o mesmo site / página ao mesmo tempo, ambos devem ser carregados ao mesmo tempo.
entretanto, como estamos falando sobre PHP, você precisa fazer anotações especiais sobre as sessões. Se suas páginas usam sessões, o servidor serve apenas uma página por vez. Isso ocorre porque o arquivo da sessão ficará bloqueado até que um script seja encerrado.
Veja este exemplo. Os 2 arquivos são carregados da mesma sessão, também conhecido como mesmo navegador do mesmo usuário.
Observe que scriptb.php só é iniciado depois que scripta.php é servido. isso ocorre porque quando o script.php é iniciado, o arquivo da sessão é bloqueado para outros scripts para que o script.php possa gravar no arquivo da sessão. Quando o script.php é concluído, o arquivo da sessão é desbloqueado e, portanto, outros scripts podem usá-lo. Assim, o scriptb.php irá esperar até que o arquivo da sessão seja liberado, então ele irá bloquear o arquivo da sessão e usá-lo.
Esse processo continuará se repetindo para evitar que vários scripts gravados no mesmo arquivo de sessão causem atrasos. Portanto, é recomendável chamar
session_write_close
() quando você não estiver mais usando a sessão, especialmente em um site que usa muitos iframes ou AJAX.fonte
Apenas corri para isso sozinho. Basicamente, você precisa ligar
session_write_close()
para evitar o bloqueio de um único usuário. Nosession_write_close()
entanto, certifique-se de não tentar modificar nenhuma variável de sessão depois de chamar . Depois de chamá-lo, trate as sessões como somente leitura a partir de então.fonte
A menos que você esteja executando uma configuração muito diferente do padrão, seu servidor web (Apache, IIS, nginx, etc.) terá vários processos que executam PHP separadamente para cada solicitação que chega ao servidor. Solicitações simultâneas serão atendidas simultaneamente.
fonte