Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

agendar automaticamente uma execução de script php em um horário específico


Você tem 3 opções. Minha recomendação:use cron se puder, orientado pelo usuário se precisar e daemon como último recurso.

(1) cron (conforme mencionado nos comentários)

cron é um agendador para sistemas linux que executará um trabalho de linha de comando em seu sistema. Você entra no seu servidor por ssh, digite crontab -e , e adicione uma linha como esta:
4 5 * * * php /path/to/my/script.php

Isso executaria o script às 5h04 todos os dias.
<?php
// /path/to/my/script.php

// Do something

Alguns serviços de hospedagem permitem inserir cron jobs com uma GUI. Existem também serviços cron externos, que chamarão uma URL para você em momentos específicos.

(2) daemon

Esta é a opção mais avançada e também a menos confiável:você executa um script de linha de comando que contém um loop infinito. O script então verifica periodicamente o estado e responde a ele. Como é provável que ele falhe após meses de execução, você precisa ter um segundo script para reiniciá-lo, caso isso aconteça. Isso dá muito trabalho, mas é a abordagem mais flexível.
<?php



while (1) {   

  // fetch $last_exec_timestamp from database

  if ($last_exec_timestamp < time() + 86400) {
    // set last_exec_timestamp to now in database

    // do something
  }
  sleep(5);

}

3. orientado pelo usuário

Se você tiver uma quantidade razoável de tráfego em seu site, você pode simplesmente incluir o trabalho this no rodapé da sua página, quando não houver mais saída. Certifique-se de que este código seja rápido, ou um usuário azarado estará esperando por ele.
<?php

// fetch $last_exec_timestamp from database

if ($last_exec_timestamp < time() + 86400) {
  // set last_exec_timestamp to now in database
  // do something
}

Há também abordagens mais sofisticadas de "orientado pelo usuário" que não testei pessoalmente em outro estouro de pilha pergunta .