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 .