• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Bruno

Problema com o tempo

6 mensagens neste tópico

Embora esteja a colocar aqui nesta secção penso que o problema se podia enquadrar em algo mais geral...

Como alguns sabem eu ando a desenvolver um jogo em PHP e até recentemente testávamos o código no meu servidor que facilmente era adaptado ao que pretendíamos. Agora que a coisa se está a tornar mais séria estamos a tentar transitar o código para um servidor decente.

Até ao momento já tivemos diversos problemas mas todos foram solucionados à excepção de um que nem sei como resolver...

A título de exemplo:

Um jogador mete o seu edifício XPTO a fazer, edifício esse que irá demorar 1h a fazer.

Actualmente o jogo mete na Base de Dados que o edifício XPTO do jogador irá acabar às: date("U") + 3600

Isto sempre funcionou bem aqui no meu ferro velho mas com um pequeno truque... desactivação da mudança de hora de Verão/Inverno. Como devem imaginar no caso que expliquei se de repente muda a hora acontece uma de duas situações:

* Se era 01:00 e passa a 02:00 então o edifício fica logo pronto...

* Se era 01:00 e passa a 00:00 então o edifício só será feito passado 2h...

Reparem que isto é um exemplo simples... porque a juntar a isto existe frotas/ataques que terão que ser precisos.

A primeira solução que me ocorreu era:

if(horario de verão) actual_time = date("U") - 3600;

Isto teoricamente iria funcionar porque manteria sempre uma sequência válida, mas voltei a receber más notícias...

"O servidor acerta as horas com a pool do ntp.org todos os dias. É possível que as horas fiquem desacertadas a dada altura (ex: alteração da hora)."

Ora... a hora poderá mudar mas se o servidor só se actualizar às 12:00 então o meu if daria bronca!

Por último admiti ter um sistema que ia buscar o date("U") a uma página que não mudasse de hora... mas perderia toda a eficiência que pretendo ter!

Para quem conseguiu ler tudo e percebeu a minha questão é.... o que me sugerem sem ser "muda de servidor"?

PS: O código está em PHP5 e o servidor em questão tem Linux!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sld thk pelo link mas não resolve em nada! :thumbsup:

Ora fui para o ubuntu brincar com as mudanças de tempo e constatei:

Antes:

U: 1193533183

Data: 01:59:43 28/10/2007

Daylight: 1

Timezone: Europe/Lisbon +0100 WEST 3600

Depois (a hora mudou):

U: 1193533204

Data: 01:00:04 28/10/2007

Daylight: 0

Timezone: Europe/Lisbon +0000 WET 0

Conclusões:

O date("U") (segundos desde 1970) não muda quando há ajustes de hora! :)

Em suma, problema resolvido... hmmmm, resolvido não, porque afinal nunca existiu! :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

porque nao utilizas o time() ? lol é o mesmo que o date("U")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Date permite mais configurações... se um dia algum deles deixar de ser suportado será o time!

De resto, como é óbvio, é igual! :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem querer ajudas-te me com esse assunto do tempo. Eu não fazia ideia de como mexer no tempo em php de maneira simples. Obrigado Bruno :thumbsup:

0

Partilhar esta mensagem


Link 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