Bom realmente não precisa de AJAX nem requisições de 1s em 1s..

Montei a solução via servidor em PHP sem ajax, sem travas, sem erros de
alterar o próprio relógio, contando automaticamente independente de acessos
concorrentes e principalmente funcionando no IECA rs...

A idéia informada pelo ERIC foi de grande ajuda, obrigado a todos.

Em 21 de outubro de 2010 16:04, Eric Saboia <[email protected]> escreveu:

> Quase..
>
> Agora entendi a uitilização do hidden, mas realmente não faz sentido ser
> num hidden, se não é algo que você vai enviar junto com a requisição, não
> tem pra que por no formulário, poderia ser array javascript com o id de cada
> produto na tela e o seu tempo de término.
>
> Quanto a requisição de sincronização, não me parece fazer sentido querer
> sincronizar a hora do usuário com a do servidor, só iria reconsultar o tempo
> restante do produto (da mesma forma que você faz na primeira requisição) e
> voltar a aplicar o cronometro em cima desse tempo.
>
> Até por que, dessa forma você não se preocupa com fuso horário, abrindo a
> possibildade pra jogadores de outros países inclusive, além disso, uma
> consulta ao banco a cada 10 minutos não significa nada, e a quantidade de
> transferência de dados entre o server e o client, por ajax, continuaria
> sendo a mesma.
>
>
> 2010/10/21 Edinho Almeida <[email protected]>
>
>> Oi Eric,
>> O fluxo que imaginei mas não sei se é o melhor:
>> A página é carregada ( busca no banco de dados os detalhes do produto e
>> seu horário de fim da promoção ), mostra o produto para o cliente, e deixa o
>> horário num campo hidden (ou uma variável em javascript mesmo) com o horário
>> do fim. O javascript 'onload' pega a hora atual do cliente e começa a
>> contagem regressiva mostrando o relógio.
>> [até aqui o cliente não clicou em nada = uma requisição com consulta ao
>> banco]
>> De tempos em tempos, por exemplo, 10 minutos, há uma requisição ajax
>> somente para sincar a hora atual do cliente com a hora do servidor.
>> [até aqui o cliente ainda não clicou em nada houve + uma requisição
>> somente para retornar a hora do servidor sem consulta ao banco;
>> A javascript confere a hora que está considerando como atual com a do
>> servidor ]
>> Quando cliente clicar em "quero este item" aí vai um request e no servidor
>> há a validação do produto, hora do fim, etc...consultados no banco de dados.
>>
>> Abs
>> Edinho Almeida
>> 11 8018-8019
>>
>>
>> 2010/10/21 Eric Saboia <[email protected]>
>>
>>> Edinho,
>>> 1 - Como assim sem consulta ao banco? você vai gravar os produtos e tempo
>>> de término como?
>>> 2 - Concordo nesse aspecto, mas em 10 minutos, dúvido que um contador
>>> javascript fique mais do que 3 segundos desincronizado, por isso falei a
>>> pouco que no máximo deveria existir esse tipo de sincronização em intervalos
>>> de aproximadamente 10 minutos, e não segundo a segundo.
>>> 3 - Se travar, acredito que a contagem pare sim, mas acho que isso são
>>> exceções, não vale a pena sacrificar o desempenho de um serviço por
>>> exceções, é melhor perder esses clientes.
>>> 4 - Continuo sem entender o porque do campo hidden.
>>>
>>>
>>> 2010/10/21 Edinho Almeida <[email protected]>
>>>
>>>> Oi Eric,
>>>> 1 - Acho (sem testar) que pode ser bem mais rápida um requisição sem
>>>> consulta ao banco. Inclusive pode ser melhor ainda fazer um php puro para
>>>> retornar somente a hora.
>>>> 2 - Me refiro a segurança de que o relógio informado ao cliente esteja
>>>> batendo com a hora do servidor. O cliente pode ver lá que "Faltam 30
>>>> segundos" então dá um submit e em 3 segundos a página retorna e diz "tempo
>>>> encerrado". Gera frustação ao cliente.
>>>> 3 - Meu laptop celeron trava. Mas realmente se isso faz uma regressiva
>>>> no javascript congelar eu não testei. Em vez de regressiva fazer a cada
>>>> segundo uma nova leitura do horário do javascript deve resolver. Mas 
>>>> insisto
>>>> ainda em saber se o horário do cliente está batendo com o do servidor.
>>>> 4 - Concordo com você. A validação do lado do servidor sempre é
>>>> obrigatória. Não faço nada sem validar no servidor.
>>>> O campo hidden seria para evitar a consulta ao banco durante a
>>>> requisição. No submit é feita uma consulta ao banco para conferir o horário
>>>> de fim.
>>>>
>>>> Abs
>>>> Edinho Almeida
>>>> 11 8018-8019
>>>>
>>>>
>>>> 2010/10/21 Eric Saboia <[email protected]>
>>>>
>>>> Nossa, vamos lá:
>>>>>
>>>>> 1 - Requisição ao banco ou ao servidor, só depende da ótica, o client
>>>>> requisita o servidor, se esse precisa ir ao banco buscar a informação, 
>>>>> tanto
>>>>> faz..
>>>>> 2 - Requisição ajax vai aumentar a segurança?
>>>>> 3 - Máquina travar por 1 minuto? oO
>>>>> 4 - Correto, o banco só precisa ter a hora de término, agora HIDDEN com
>>>>> essa hora? você NUNCA pode confiar na informação que vem do cliente, isso 
>>>>> é
>>>>> regra número 1 de segurança. e é por esse motivo que o cronômetro ser por
>>>>> ajax ou javascript independe na segurança, pois você não deve confiar 
>>>>> nessa
>>>>> informação pra aceitar ou não o lance. Como eu já disse anteriormente, a
>>>>> verificação do tempo tem que ser feita NO servidor, por mais que o
>>>>> cronometro ainda mostre tempo maior que zero, se a verificação no servidor
>>>>> mostrar que o tempo encerrou, a requisição não pode ser aceita.
>>>>>
>>>>> 2010/10/21 Edinho Almeida <[email protected]>
>>>>>
>>>>> Amigos.
>>>>>> Pelo que entendi não é requisição ao banco e sim ao servidor para
>>>>>> buscar a hora do servidor, ou não?
>>>>>> Realmente será um request ajax por segundo, porém a segurança de que o
>>>>>> horário está sendo obedecido é maior.
>>>>>> Se a máquina do cliente travar por um minuto quando houver a nova
>>>>>> requisição a data voltará correta.
>>>>>>
>>>>>> No banco fica somente a hora do fim. que é lida só quando a página
>>>>>> carrega.
>>>>>> O Ajax busca o horário do servidor e o javascript faz a conta com o
>>>>>> horário do fim que está num campo hidden.
>>>>>> Daria para equilibrar segurança com redução de requests fazendo o
>>>>>> javascript fazer a regressiva, mas de 15 em 15 segundos, por exemplo 
>>>>>> fazer
>>>>>> uma requisição para aferir o horário.
>>>>>>
>>>>>> Abs
>>>>>> Edinho Almeida
>>>>>> 11 8018-8019
>>>>>>
>>>>>>
>>>>>> 2010/10/21 Leonardo Grillo <[email protected]>
>>>>>>
>>>>>>> 1 requisição ao banco por segundo só para isso? acho meio que
>>>>>>> desnecessário...
>>>>>>> Se você paga um servidor de hospedagem por trafego, imagine se 1.000
>>>>>>> pessoas acessam o seu site por dia, ficam vendo este cronometro por 
>>>>>>> 10min e
>>>>>>> que esta tarefa gere um fráfego de 1kb por requisição. é só multiplicar:
>>>>>>> 585.9375mb por dia!
>>>>>>>
>>>>>>> Em 21 de outubro de 2010 11:00, Eric Saboia <[email protected]>escreveu:
>>>>>>>
>>>>>>>  Acho essa abordagem horrível. De qualquer forma você não irá
>>>>>>>> garantir a precisão do cronômetro pelo delay que a requisição via ajax 
>>>>>>>> leva,
>>>>>>>> além de gerar uma porrada de requisições que podem afetar o desempenho 
>>>>>>>> do
>>>>>>>> serviço.
>>>>>>>>
>>>>>>>> 2010/10/21 Tiago Davi <[email protected]>
>>>>>>>>
>>>>>>>> Nossa.. rs de 1s em 1s o servidor fica fazendo requisições e com
>>>>>>>>> acessos concorrentes?
>>>>>>>>>
>>>>>>>>> Acho que estou tentando ir pelo caminho mais difícil e não estou
>>>>>>>>> exergando o mais simples.
>>>>>>>>>
>>>>>>>>> Gostei da solução mas isso não prejudica a performance em um
>>>>>>>>> servidor compartilhado?
>>>>>>>>>
>>>>>>>>> Parabéns pelos sites, muito bom mesmo.
>>>>>>>>>
>>>>>>>>> Em 21 de outubro de 2010 11:50, Allan Torres ( Hazi) <
>>>>>>>>> [email protected]> escreveu:
>>>>>>>>>
>>>>>>>>> Gente,
>>>>>>>>>> Construi alguns desses , www.japegou.com.br ,
>>>>>>>>>> www.liquidatagua.com.br e to vendendo a solução também para
>>>>>>>>>> alguns estados, graças a deus ta começando bem legal, mas esse 
>>>>>>>>>> contador
>>>>>>>>>> funciona com um ajax bem simples, pois você cadastra o horario de 
>>>>>>>>>> inicio, e
>>>>>>>>>> horario final, juntamente com a data, dai é fazer uma requisição 
>>>>>>>>>> ajax que de
>>>>>>>>>> 1 em 1 segundo busque a informação e traga ao site, o complicado as 
>>>>>>>>>> vezes é
>>>>>>>>>> a questão de fuso horario dos servidores mas facilmente resolvido 
>>>>>>>>>> com uma
>>>>>>>>>> soma de mais ou menos horas...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Abraços, precisando de alguma coisa relacionada a esse tipo de
>>>>>>>>>> sistemas, to por aqui,
>>>>>>>>>> Mandem PVT.
>>>>>>>>>>
>>>>>>>>>> allan Torres
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2010/10/21 Roberto Almeida Quilice Longhi <
>>>>>>>>>> [email protected]>
>>>>>>>>>>
>>>>>>>>>>  Tiago,
>>>>>>>>>>>
>>>>>>>>>>> Concordo que parte tem que ser feita em javascript e parte no
>>>>>>>>>>> servidor.
>>>>>>>>>>> Eu faria dessa forma para não ficar fazendo requisição no
>>>>>>>>>>> servidor se é algo que o cliente pode resolver.
>>>>>>>>>>>
>>>>>>>>>>> Porém não entendi o paragrafo abaixo:
>>>>>>>>>>>
>>>>>>>>>>> "Pois em windows você pode programar a execução de um método
>>>>>>>>>>> automaticamente mas agora em linux.. ai é que são elas."
>>>>>>>>>>> O que tu quis dizer com isso ?
>>>>>>>>>>>
>>>>>>>>>>> Em 21/10/2010 11:22, Tiago Davi escreveu:
>>>>>>>>>>>
>>>>>>>>>>> Interessante, fiquei analisando esses sites de compras coletivas
>>>>>>>>>>> e tenho quase certeza que eles funcionam com Asp.net..
>>>>>>>>>>> Pois em windows você pode programar a execução de um método
>>>>>>>>>>> automaticamente mas agora em linux.. ai é que são elas.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Em 21 de outubro de 2010 11:18, Lucas <[email protected]>escreveu:
>>>>>>>>>>>
>>>>>>>>>>>> Na parte da visualização (Front End) é JavaScript... Agora, você
>>>>>>>>>>>> pode fazer um esquema de ajax, para sincronizar o relógio de tempo 
>>>>>>>>>>>> em tempo,
>>>>>>>>>>>> tendo consulta no banco ou não.. e quando "zerar" o cronometro, 
>>>>>>>>>>>> você também
>>>>>>>>>>>> faz uma requisição ajax para certificar que o tempo foi 
>>>>>>>>>>>> "acabado"...
>>>>>>>>>>>> Eu faria assim.
>>>>>>>>>>>>
>>>>>>>>>>>> Em 21 de outubro de 2010 11:15, Tiago Davi <tiago.asp.net@
>>>>>>>>>>>> gmail.com> escreveu:
>>>>>>>>>>>>
>>>>>>>>>>>>>  Bom dia galera.
>>>>>>>>>>>>>
>>>>>>>>>>>>>  Gostaria de saber se é possível em PHP fazer um cronômetro no
>>>>>>>>>>>>> estilo Peixe Urbano de forma que fique contando o tempo 
>>>>>>>>>>>>> automáticamente no
>>>>>>>>>>>>> servidor mesmo
>>>>>>>>>>>>> sem a execução do script.
>>>>>>>>>>>>>
>>>>>>>>>>>>>  Por exemplo:
>>>>>>>>>>>>>
>>>>>>>>>>>>>  Um usuário entrou e viu uma oferta que tem 01:20:00, o mesmo
>>>>>>>>>>>>> saiu da página e ficou 1h fora e quando voltou o tempo estava em 
>>>>>>>>>>>>> 00:20:00.
>>>>>>>>>>>>>
>>>>>>>>>>>>>  Alguém tem idéia de como fazer isso de forma eficiente em um
>>>>>>>>>>>>> servidor linux?
>>>>>>>>>>>>>
>>>>>>>>>>>>>  Att.
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Tiago Davi - Desenvolvedor Web.
>>>>>>>>>>>>> http://tiagoaspnet.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>>  Política e outros temas:
>>>>>>>>>>>>> http://socorrobr.blogspot.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>  _______________________________________________
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> http://www.codeigniter.com.br
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>>>>>
>>>>>>>>>>>>> ---------------------------
>>>>>>>>>>>>> Oportunidade de negócio
>>>>>>>>>>>>> http://www.franquiasargohost.net
>>>>>>>>>>>>> ---------------------------
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Att.
>>>>>>>>>>>> Lucas H. J. Sigaki
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> http://www.codeigniter.com.br
>>>>>>>>>>>>
>>>>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>>>>
>>>>>>>>>>>> ---------------------------
>>>>>>>>>>>> Oportunidade de negócio
>>>>>>>>>>>> http://www.franquiasargohost.net
>>>>>>>>>>>> ---------------------------
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Tiago Davi - Desenvolvedor Web.
>>>>>>>>>>> http://tiagoaspnet.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>>  Política e outros temas:
>>>>>>>>>>> http://socorrobr.blogspot.com/
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________li...@codeigniter.com.brhttp://www.codeigniter.com.brhttp://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>>>
>>>>>>>>>>> ---------------------------
>>>>>>>>>>> Oportunidade de negóciohttp://www.franquiasargohost.net
>>>>>>>>>>> ---------------------------
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Roberto Almeida Quilice Longhi
>>>>>>>>>>> Folha de Pagamento - Web
>>>>>>>>>>> Ramal: 1406
>>>>>>>>>>> Tel: (11) 8599-9022
>>>>>>>>>>> Programação Contmatic
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> [email protected]
>>>>>>>>>>> http://www.codeigniter.com.br
>>>>>>>>>>>
>>>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>>>
>>>>>>>>>>> ---------------------------
>>>>>>>>>>> Oportunidade de negócio
>>>>>>>>>>> http://www.franquiasargohost.net
>>>>>>>>>>> ---------------------------
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Allan Torres
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> [email protected]
>>>>>>>>>> http://www.codeigniter.com.br
>>>>>>>>>>
>>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>>
>>>>>>>>>> ---------------------------
>>>>>>>>>> Oportunidade de negócio
>>>>>>>>>> http://www.franquiasargohost.net
>>>>>>>>>> ---------------------------
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Tiago Davi - Desenvolvedor Web.
>>>>>>>>> http://tiagoaspnet.blogspot.com
>>>>>>>>>
>>>>>>>>> Política e outros temas:
>>>>>>>>> http://socorrobr.blogspot.com/
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> [email protected]
>>>>>>>>> http://www.codeigniter.com.br
>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>>
>>>>>>>>> ---------------------------
>>>>>>>>> Oportunidade de negócio
>>>>>>>>> http://www.franquiasargohost.net
>>>>>>>>> ---------------------------
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Eric Saboia - eric.saboia.org
>>>>>>>> PHP Zend Certified Engineer
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> [email protected]
>>>>>>>> http://www.codeigniter.com.br
>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>>
>>>>>>>> ---------------------------
>>>>>>>> Oportunidade de negócio
>>>>>>>> http://www.franquiasargohost.net
>>>>>>>> ---------------------------
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> [email protected]
>>>>>>> http://www.codeigniter.com.br
>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>>
>>>>>>> ---------------------------
>>>>>>> Oportunidade de negócio
>>>>>>> http://www.franquiasargohost.net
>>>>>>> ---------------------------
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> [email protected]
>>>>>> http://www.codeigniter.com.br
>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>>
>>>>>> ---------------------------
>>>>>> Oportunidade de negócio
>>>>>> http://www.franquiasargohost.net
>>>>>> ---------------------------
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Eric Saboia - eric.saboia.org
>>>>> PHP Zend Certified Engineer
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> [email protected]
>>>>> http://www.codeigniter.com.br
>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>>
>>>>> ---------------------------
>>>>> Oportunidade de negócio
>>>>> http://www.franquiasargohost.net
>>>>> ---------------------------
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> [email protected]
>>>> http://www.codeigniter.com.br
>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>>
>>>> ---------------------------
>>>> Oportunidade de negócio
>>>> http://www.franquiasargohost.net
>>>> ---------------------------
>>>>
>>>>
>>>
>>>
>>> --
>>> Eric Saboia - eric.saboia.org
>>> PHP Zend Certified Engineer
>>>
>>>
>>> _______________________________________________
>>> [email protected]
>>> http://www.codeigniter.com.br
>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>>
>>> ---------------------------
>>> Oportunidade de negócio
>>> http://www.franquiasargohost.net
>>> ---------------------------
>>>
>>>
>>
>> _______________________________________________
>> [email protected]
>> http://www.codeigniter.com.br
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>> ---------------------------
>> Oportunidade de negócio
>> http://www.franquiasargohost.net
>> ---------------------------
>>
>>
>
>
> --
> Eric Saboia - eric.saboia.org
> PHP Zend Certified Engineer
>
>
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>
>


-- 
Tiago Davi - Desenvolvedor Web.
http://tiagoaspnet.blogspot.com

Política e outros temas:
http://socorrobr.blogspot.com/
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a