Du har 3 alternativ. Min rekommendation:Använd cron om du kan, användardriven om du måste och demon som en sista utväg.
(1) cron (som nämnts i kommentarerna)
cron är en schemaläggare för linux-system som kör ett kommandoradsjobb på ditt system. Du loggar in på din server över ssh, skriv crontab -e
, och lägg till en rad så här:
4 5 * * * php /path/to/my/script.php
Detta skulle köra skriptet klockan 5:04 varje dag.
<?php
// /path/to/my/script.php
// Do something
Vissa värdtjänster tillåter att ange cron-jobb med ett GUI. Det finns också externa cron-tjänster som kommer att anropa en URL åt dig vid specifika tidpunkter.
(2) demon
Detta är det mest avancerade alternativet och även det minst pålitliga:Du kör ett kommandoradsskript som innehåller en oändlig loop. Skriptet kontrollerar sedan regelbundet status och svarar på det. Eftersom det sannolikt kraschar efter månader av körning, måste du ha ett andra skript för att starta om det om det skulle göra det. Detta är mycket arbete, men det är det mest flexibla tillvägagångssättet.
<?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. användardriven
Om du har en anständig mängd trafik på din webbplats kan du helt enkelt inkludera jobbet detta i sidfoten, när det inte finns mer utdata. Se till att den här koden är snabb, annars väntar en oturlig användare på den.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Det finns också mer tjusiga metoder för "användardriven" som jag inte personligen har testat i ett annat stackspill fråga .