Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

augustogava

Multitarefa com php

Recommended Posts

È possível com mesmo usuário executar 2 páginas ao mesmo tempo e receber resposta de ambas ?Por exemplo façam uma página com 1 while gigante e botem para executar, ai na mesmo hora abra outro browser e tente abrir outra página do servidor, ou a mesma página. Vocês irão perceber que a 2 página não abre enquanto a execução da primeira (que tem o while) não terminar!Como resolver isso? me parece que é um bloqueio do apache ou php sei lá, para execução de apenas 1 página por usuário... tem como burlar ??? ou alterar isso?flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, não entendi o seu problema.você pode executar quantas paginas quiser no mesmo servidor e ate mesmo em abas diferentes do firefox ou ie7. explica melhor ai seu problema pra ver se a gente consegue entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, não entendi o seu problema.você pode executar quantas paginas quiser no mesmo servidor e ate mesmo em abas diferentes do firefox ou ie7. explica melhor ai seu problema pra ver se a gente consegue entender.

Então cara ai que tá, você pode mas não consegue...Tente fazer o teste que mencionei, enquanto tiver uma página executando uma query do PHP (por exemplo o while grande para teste), e vocÊ abrir outra página ao mesmo tempo, essa outra não irá comecar a ser executada enquanto a primeira não terminar o while !!Tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também não entendi :)Se você acessa páginas de um servidor, pode abrir quantas quiser. As páginas (todas) serão processadas conforme seu processador aguentar.Em se tratando de PHP, é o servidor que processa e devolve o retorno, então você pode acessar mais de uma página também, sem problemas.Esse teste com while que você fez, qual o link?[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson,

O teste fiz offline aqui na máquina, e já testei isso em outro servidor interno nosso aqui.

 

Então cara é assim, você pode mesmo abrir várias páginas, porém como visualizado nesse teste emquando não termina o processamento de uma, não irá para a próxima.

 

Testa esse código ai, rode ao mesmo tempo a mesma página em 2 browsers diferente, em quanto não termina o processamento do for na primeira página que for rodada, a 2 não irá iniciar.

 

<?phpfor($i=0; $i<500000; $i++){	print $i."<br />";	flush();}print "FIMMMM";?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste Augusto, mas penso que não é problema com relação ao processamento no cliente apenas.Loops retornam tudo após o processamento, e não faz uma leitura de "cima pra baixo" da página.Se você tentar abrir o seu script e abrir outra página, mesmo que dentro do mesmo servidor, elas abrirão ao mesmo tempo (considerando o processamento de cada uma). Outra questão é o processamento da máquina: aqui, ao abrir o seu script de teste, o uso de CPU ficou em 100% até sua finalização. E, detalhe, o último resultado variou, sendo que recebi o valor 346525.Como o servidor só processa e joga o resultado pro cliente, ele não sofre tanto com isso.Se tiver a oportunidade, faz um teste aí abrindo um arquivo de texto (.txt mesmo) de 50Mb ;)Outro teste: depois de abrir o script de exemplo, salva a página gerada como HTML. Abra-a no navegador e aguarde.Mesmo sem processar pelo PHP, a demora é semelhante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum entendi o que você quis dizer, mas por exemplo no 2º teste de copiar o HTML. se eu abrir 2 browsers rapidamente os 2 vão executar ao mesmo tempo demora mais, mas tudo bem. Já vindo do servidor onde o PHP roda ele apenas comeca a rodar a 2º página quiando a 1º terminar... parece que o Apache sei lah, tem uma fila de execução por usuário ou sei lah....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso pode ser mesmo. Desconheço, mas talvez o servidor, ao processar requisições para um mesmo arquivo, a partir de um mesmo IP, pode entrar numa espécie de fila, como você disse que fez no seu teste aí. Vou procurar algo na documentação. Se encontramos, fica pro conhecimento geral :)Abraço,Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, na minha opinião o que ta rolando é o seguinte, o apache fica "ocupado" aguardando o php processar aquele while gigante e enquanto isso ele trava as proximas requisições, neste caso, como você mesmo disse ali em cima, é sim uma fila, e tem configurações do apache pra manipular isso, mas você tem que analizar o poder do seu hardware pra configurar o apache pra obter o melhor desempenho.se você quer um teste bem real sobre isso, espera chegar o ultimo dia de inscrição de um concurso grande (como o enem por exemplo) e tenta fazer inscrição. vai rolar a mesma coisa, o servidor fica tão ocupado com as requisições e a fila fica tão grande que o serviço as vezes ate cai ou fica extremamente lento.entendeu?espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

diegoholiveira e você saberia dizer em que arquivo de configuração do apache faria isso? dei uma procurada em todos e não achei nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão da quantidade de requisições, como no exemplo citado em dia de concurso, pode não ser somente a questão do Apache sobrecarregar, mas também o próprio link de conexão.[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.