Pergunta

Say I tem um jogo em PHP que é um dinheiro que faz o jogo e todos os dias os preços em itens de mudança no mercado.

Como eu poderia fazê-lo de modo que os preços do banco de dados são atualizadas automaticamente a cada dia? Será que eu instalar um programa no servidor que detecta quando ele passou 24 horas em seguida, executa um arquivo PHP que faz a actualização? Ou OS há outro caminho?

Edit: A coisa é pessoal, eu não possui realmente o servidor que alugá-lo a partir de uma empresa de hospedagem, então eu realmente não têm acesso a linha de comando: s

Obrigado, Stanni

Foi útil?

Solução

Uma vez que você provavelmente não tem acesso a cron quer que eu gostaria de fazer é verificar quanto tempo se passou cada vez que alguém carrega uma página. Se 24 horas se passaram, em seguida, chamar sua função de atualização. Se 48 horas se passaram, em seguida, chamá-lo duas vezes. Se ninguém carrega a página, então não importa se a função de atualização foi chamado ou não, porque ninguém está olhando;)

Ou você poderia configurar um computador em casa para chamar a sua update.php remotamente a cada 24 horas. Você pode fazer isso com um trabalho cron e wget ou se você estiver usando o Windows, você poderia usar o agendador de tarefas.

Eu acho que a primeira opção irá trabalhar o melhor. Chamar sua função de atualização a cada carregamento da página e só atualização quando a marca de 24 horas já passou. Se você escrevê-lo corretamente, não importa se ele é atualizado no exato marca de 24 horas.

Outras dicas

Assumindo que você está em um sistema Unix, você deve configurar um cron diariamente. Para fazer isso, execute "crontab -e" e digitar algo como:

9 21 * * * /path/to/your/script

Esta será executado em 21:09 todos os dias.

Se você não tem acesso à linha de comando, você pode adicionar uma imagem de 1x1 para o site que chama um script php que verifica se há precisa de algo ser atualizado.

algo como

<img style="width: 1px; height: 1px; visibility: hidden" src="cron.php">

Em cron.php você verificar se as necessidades de dados a ser atualizado.

Você quer criar um "cron job", ou um arquivo PHP que é executado em um determinado intervalo definido.

Confira este artigo para obter mais informações.

A melhor parte sobre tarefas agendadas é que você não está limitado ao pequeno subconjunto de funcionalidades disponíveis no digamos, procedimentos armazenados. Você pode usar qualquer lógica que você gosta! :)

Se você tem um script que atualiza os preços e tudo o que você quer fazer é executá-lo todos os dias, use Cron (linux) ou no comando (Windows).

Como você não poderia 'ter acesso à linha de comando? Eu não posso pensar de qualquer host que não permite o acesso ssh. Ter acesso a cron é uma história diferente, mas eles devem permitir que este, também. Se não o fizerem - encontrar um novo hospedeiro

Esqueça tudo isso. Não há nenhuma razão para fazer nada disso.

Tudo que você tem a fazer é verificar cada vez que alguém chama a página web. -Lo a acompanhar a data e quando a data atual não corresponde ao seu variável, então você disparar a coisa que obtém novos dados. Bam! Claro que isso não é muito escalável, mas é bom para um pequeno jogo.

Eu acho que você pode fazer uma função que é chamado toda vez que uma página é acessada, e verifica se a atualização ocorreu, verificando contra um banco de dados.

Assim, em um código pseudo rápida:

function verify_often(){
  if (last_update_in_db() != today() ){
    update_db();
    run_periodic_function(); 
  }
  return 0;
}

Este método requer somente a combinação clássica PHP e MySQL.

Eu não poderia trabalhar para fora como para responder a resposta de Alex, mas eu gostaria de mencionar algo que eles disseram. Quando eles disseram "verificar quanto tempo se passou cada vez que alguém carrega uma página" Sinto que você não precisa fazer check-a cada vez que a página é carregada. A melhor maneira de fazer isso seria a de verificar quando um usuário faz login. Se for mais de 24 horas, enquanto os usuários ainda está logado ele não importará para o cenário descrito. Os alguém registros próxima vez nos preços dos itens irá mudar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top