Como criar um cronômetro de contagem decrescente e executar uma consulta sql com PHP quando for concluída?

Estou usando o seguinte script jQuery que regista a contagem do tempo até o $end e quando isso acontecer, ele é exibido.

No entanto, quando você altera a hora no seu computador, a contagem regressiva é alterada. O que eu tinha em mente é como aquelas contagens regressivas que o Groupon tem.

Minha pergunta é como mudar a fonte de tempo em algo que não pode ser alterado, talvez o tempo do servidor? E quando o timer atinge 0, como posso executar uma consulta SQL usando o PHP?

Estou totalmente no caminho errado?

Obrigado.

   $(document).ready(function() { $("#time").countdown({ date: "", onComplete: function( event ){ $(this).html("Completed"); }, leadingZero: true }); });  

Está certo ter um cronômetro de contagem regressiva de JavaScript na maioria das situações, mas você não pode confiar em um script do lado do cliente para não “acelerar” o cronômetro. O usuário sempre pode enganar o timer, alterando o relógio do sistema, mexendo com as variables ​​de JavaScript manualmente, e assim por diante.

Lendo entre as linhas parece que você quer fazer algo como colocar uma nota na base de dados quando um produto está disponível ou uma oferta expira. Se assim for, você deve fazer exatamente esse lado do servidor, especialmente se a consulta deve ser executada, mesmo que o usuário navegue longe da página e talvez retorna somente após o prazo. Talvez repensar a lógica completamente: em vez de fazer uma anotação no database no momento em que o timer se esgotar, coloque o tempo de expiração no database de antemão, aquelas marcas quando a alteração entrar em vigor.

Outra possibilidade é quando o timer de JavaScript atinge a marca para que a página faça uma chamada para o servidor. O servidor verifica se a chamada foi feita na hora certa. Em caso afirmativo, execute a consulta SQL, mas, de outro modo, diga ao JavaScript que deve manter o timer em execução. (Por exemplo, se o servidor acha que a chamada foi feita 10 minutos mais cedo, retornar dados para o JavaScript dizendo que ele deve reiniciar o timer em 10 minutos e depois tentar novamente).

Esta pode ser a pior idéia na existência, mas talvez você possa simplesmente calcular o tempo entre agora e a data de término uma vez, encontrar o número de intervalos desejados e, em seguida, chamar setInterval e diminuir manualmente o valor.

AKA:

 var initialTime = new Date(); var endTime = /* Your Time when the thing is over */ var intervalId = setInterval(function() { // Every second, decrement the counter by 1 second. // if counter is done, show end and then clearInterval(intervalId); }, 1000); 

O que você está perguntando é impossível. Você pode usar setTimeout que triggersrá após um número específico de milissegundos.