Hai 3 opzioni. Il mio consiglio:usa cron se puoi, guidato dall'utente se necessario e daemon come ultima risorsa.
(1) cron (come menzionato nei commenti)
cron è uno scheduler per sistemi Linux che eseguirà un lavoro da riga di comando sul tuo sistema. Accedi al tuo server tramite ssh, digita crontab -e
e aggiungi una riga come questa:
4 5 * * * php /path/to/my/script.php
Questo eseguirebbe lo script alle 5:04 ogni giorno.
<?php
// /path/to/my/script.php
// Do something
Alcuni servizi di hosting consentono di inserire lavori cron con una GUI. Ci sono anche servizi cron esterni, che chiameranno un URL per te in momenti specifici.
(2) demone
Questa è l'opzione più avanzata e anche la meno affidabile:esegui uno script della riga di comando che contiene un ciclo infinito. Lo script quindi controlla periodicamente lo stato e risponde ad esso. Poiché è probabile che si arresti in modo anomalo dopo mesi di esecuzione, è necessario disporre di un secondo script per riavviarlo nel caso in cui lo faccia. Questo è un sacco di lavoro, ma è l'approccio più flessibile.
<?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);
}
Se hai una discreta quantità di traffico sul tuo sito, puoi semplicemente includere un lavoro questo nel piè di pagina della tua pagina, quando non c'è più output. Assicurati che questo codice sia veloce o un utente sfortunato lo aspetterà.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Esistono anche approcci più fantasiosi di "guidato dall'utente" che non ho testato personalmente in un altro overflow dello stack domanda .