Ir para conteúdo

POWERED BY:

Arquivado

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

Jhon Paulo

Qual o método mais utilizado para comunicação frontend / backend ?

Recommended Posts

ahh entendiii... o servidor fica dando loops 'infinitos' até que oq você pediu se realize..

seria como:

Cliente: Servidor, me dê uma nova mensagem!

Servidor: Ok. Aguarde um momento! (loops...); 'eu sei que ele não responde nada rs..'

- 1 minuto depois

Servidor: Tome sua mensagem.

 

mas tem o tempo limit! Daí vou ter que configurar o servidor pro tempo limit ser bem maior que os 30 segundos padrão, não é?

 

ou você acha que poderia manter os 30 segundos e deixar cair a conexão? pois o javascript abrirá a conexão novamente após 3 segundos passados.

 

ou tem algum detalhe q eu não percebi q faria os 30 segundos zerar? :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o Andrey Knupp me mostrou qual era a essência do Long Pooling eu fiquei MUITO de cara.

 

Muita teoria complexa pra uma coisa tão ridiculamente besta de se fazer.

 

Mas vamos lá. Não tenho certeza, mas parece que quando se invoca usleep() a contagem do tempo de execução zera.

 

Se não for assim, não sei :yay: Mas também, só um:

 

set_time_limit( 0 );

Resolveria.

 

Mas o script não vai ficar fazendo lops infinitos. É um só.Quando, finalmente, acabar, a requisição termina.

Compartilhar este post


Link para o post
Compartilhar em outros sites

while($currModif <= $lastModif) {
usleep(100000); // dorme 100ms para poupar o servidor; pode ser mais ou menos, dependendo da aplicação
clearstatcache(); // limpa o cache
$currModif = filemtime($filename);
}

 

isso acima não seria um loop infinito no servidor?

ele verificaria se o arquivo foi modificado a cada 100ms

 

meu medo é de tentar fazer uma coisa dessas em um servidor que aceitar apenas 50 conexões simultâneas em um banco de dados, daí 51 pessoas online já daria um probleminha...

Compartilhar este post


Link para o post
Compartilhar em outros sites
mas tem o tempo limit! Daí vou ter que configurar o servidor pro tempo limit ser bem maior que os 30 segundos padrão, não é?

A chave é isso aqui:

usleep(100000);

 

Ele libera a thread que está atendendo a sua requisição, ela para de ocupar processamento em muito menos de 30s.

O que a requisição não pode fazer é demorar 30s querendo o processador, aí dá o erro.

 

Faça o teste aí... seta o limite de execução pra 30s e executa esses arquivos aí por mais de 30s.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa fiz um loop infino e com certeza não deu nenhum problema. e o melhor: Não ficou toda hora fazendo requisições. Obrigado por compartilhar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ainda por cima o erro de conexão doo facebook não foi tratado. Quando eu vi que o Long Polling do facebook acontecia um erro, eu trabalhei em cima do script para tratar esse erro. A forma é bem simples, o erro ocorre pelo timeout do PHP. Basta interromper o script antes, tratar a informação recebida pelo javascript e realizar novamente a requisição.

 

A maior diferença entre Server Push e Long Polling é o fato de, no Server Push, o cliente solicita uma única vez a informação do servidor, e sempre que houver uma alteração, o servidor lhe envia. Já no Long Polling, o cliente pergunta se há alterações e espera até o servidor retornar. Quando houver alterações e o servidor der o retorno, o cliente fará a mesma pergunta novamente, e aguardará as informações. As imagens abaixo ilustra bem o Ajax (Polling), Long Polling e Server Push(Comet).

 

Ajax (Polling)

polling.jpg

 

Long Polling

longpolling.jpg

 

Server Push (Comet)

comet.jpg

 

Fonte: http://forum.imasters.com.br/topic/454444-long-polling/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho, pra mim isso tudo é muito novo e da dúvida na hora pra saber com fazer;

 

Pra usar o comet com php, precisaria de um pouco de javascript correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, acho que vou começar a desenvolver um projeto(para fins didáticos) e vou implantar o método comet em um iframe pra buscar os dados..

e para inserção de dados vou utilizar um ajax basicão.

 

Assim, ao mesmo tempo em que eu tiver inserindo dados eu estarei lendo tb...

pois só podemos manter uma requisição ajax por vez, daí entraria um iframe pra ter 2 ajaxs. funcionaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas os uploads virtualmente sem refresh, quando não usam Flash não são a base de IFRAME?

Compartilhar este post


Link para o post
Compartilhar em outros sites
quando não usam Flash não são a base de IFRAME?

Até onde eu sei, é isso mesmo. Fiz um plugin interessante para o upload "assíncrono". Mas é sim, na base do iframe. Entretanto, "dizem" que a jQuery File Upload não utiliza iframe(o qual eu não acredito). Só não tive tempo de debugar o código.

 

O fato de não haver a possibilidade de upload assíncrono, é por questões de segurança dos navegadores, não permitindo que um arquivo seja manipulado pelo javascript. Somente através de uma alteração no browser do cliente.

 

Edit --------

 

Olhei por cima o código da jQuery File Upload, e há um javascript com o seguinte nome "jquery.iframe-transport.js". A descrição dele é basicamente para transporte de arquivos.

 

Edit 2 --------

"Dizque" o framewokr MooTools faz isso... E como praxe, não acredito '-'

Nisso sou como São Tomé.... até me mostrar, eu nego.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax não envia arquivos mesmo, mas existem uploaders flash que simulam isso, tais como o swfupload e o fancyuploader.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax não envia arquivos mesmo, mas existem uploaders flash que simulam isso, tais como o swfupload e o fancyuploader.

 

 

O script Valums Ajax Upload usa o objeto XmlHttpRequet (XHR) para fazer o upload de arquivos sem precisar de iframe, mas esse esquema funciona apenas no FF3.6+, Safari4+ e Chrome6+, para os outros navegadores ele usa um iframe como fallback. Suporta múltiplos arquivos e mostra o percentual de progresso do envio. A licença de uso é GPL/2.

 

http://valums.com/ajax-upload/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, a última vez que eu havia pesquisado sobre isso, encontrei um draft da W3C sobre o protocolo de envio de arquivos via AJAX, mas que não estava implementado ainda.

Bacana esse uploader aí... Quando tiver com um tempinho, vou dar uma olhada melhor...

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.