Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

km92

Contador de 2 em 2 horas

Mensagens Recomendadas

km92

Boas pessoal.

Tenho um blog onde é adicionado conteúdo exactamente às 00:00, 02:00, 04:00, 06:00... e por aí fora.

Tenho um plugin que faz isto automaticamente, ou seja, de 2 em 2 horas adiciona conteúdo (neste caso vídeos).

Para tornar o site um pouco mais amigável queria colocar nalgum sítio do site uma mensagem a informar quanto tempo falta para o site ser actualizado.

Já pesquisei por vários scripts mas nenhum fez o que eu quero.

Alguém me pode ajudar nisto? O formato que quero é algo deste género: "Tempo restante para a próxima actualização: 1 hora, 23 minutos, 40 segundos" e assim que chega a 0 recomeçar novamente.

Desde já muito obrigado  :-[

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

km92,

Uma vez que os teus visitantes podem vir de qualquer lado do mundo, fazer um simples contador decrescente não é suficiente. Isto acontece porque como o Javascript é executado do lado do cliente, as horas utilizadas são as do lado do cliente.

Ou seja, se tu disseres que o conteúdo vai ser lançado às duas da manhã, no lado do cliente podem já ser 3h da manhã, e isso daria erro. Uma solução é utilizares medidas de tempo UTC...

Outra solução é, via php, enviares com cada refresh da página o número de segundos restantes até à próxima actualização. Desta forma, o tempo utilizado seria o do teu servidor, e nunca haveria erro.

EDIT:

Para actualizares o contador, investiga a sintaxe da função setInterval, e o resto é apenas uma simples conversão de segundos num formato legível (3600s = 1h).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

No php tens funções para saber a hora actual, certo? Pronto, tens que fazer um script que calcule o número de segundos que faltam desde "agora" até ao próximo update.

$nextupdate = mktime( /* tens que ver a sintaxe desta função e definir aqui a hora do próximo update */ );
$now = $time();

$remaining = $nextuptime - $now;

E depois imprimes essa variável no javascript da página... E utilizando javascript fazes um countdown como esse número de segundos (que é quanto falta para o próximo update).

EDIT: tens que ter em atenção que cada vez que chamas mktime() tens que te certificar que sabes a hora actual para saberes a próxima hora de update... Ou seja, se os updates forem de 2 em 2h, e o último update tiver sido à meia noite e forem agora 1h da manhã, o próximo update é às 2h da manhã... Mas se já forem 2h05, o próximo update é às 4h. Tens que desenhar uma função que tenha isso em conta :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
km92

Agradeço imenso a ajuda, mas não percebo nada de php :x

Vou tentar pesquisar um pouco para ver se consigo mais alguma coisa :\

Mas muito obrigado pela ajuda :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Tenta fazer por ti... Ganhar experiência em php não te faz mal nenhum e vai dar-te muito jeito para outras coisas.

Vai dizendo como vai isso entretanto para te podermos ajudar sem te dizer tudo ;)

Uma dica... Se o cronjob correr a horas pares (0, 2, 4, 6, etc), para saberes a hora do próximo update é preciso apenas saber se a hora actual é par ou não. Se for par, a hora do próximo update é essa + 2. Se for impar, é essa + 1.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Outra coisa... se não te sentires bem com php mas não tiveres problema com Javascript podes fazer isto em Javascript também. Apenas tens que saber qual a timezone do teu servidor e fazer continhas com datas via Javascript.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.