Je hebt 3 opties. Mijn aanbeveling:gebruik cron als het kan, gebruikersgericht als het moet, en daemon als laatste redmiddel.
(1) cron (zoals vermeld in opmerkingen)
cron is een planner voor linux-systemen die een opdrachtregeltaak op uw systeem uitvoert. U logt in op uw server via ssh, typ crontab -e
, en voeg een regel als deze toe:
4 5 * * * php /path/to/my/script.php
Dit zou het script elke dag om 5:04 uur uitvoeren.
<?php
// /path/to/my/script.php
// Do something
Bij sommige hostingdiensten is het mogelijk om cron-taken in te voeren met een GUI. Er zijn ook externe cron-services, die op bepaalde tijden een URL voor je aanroepen.
(2) daemon
Dit is de meest geavanceerde optie en ook de minst betrouwbare:u voert een opdrachtregelscript uit dat een oneindige lus bevat. Het script controleert vervolgens periodiek de status en reageert erop. Omdat het waarschijnlijk crasht na maanden van draaien, moet je een tweede script hebben om het opnieuw te starten voor het geval dat het geval is. Dit is veel werk, maar het is de meest flexibele aanpak.
<?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);
}
Als u een behoorlijke hoeveelheid verkeer op uw site heeft, kunt u eenvoudig een the job this in uw paginavoettekst opnemen, wanneer er geen output meer is. Zorg ervoor dat deze code snel is, anders zit een ongelukkige gebruiker erop te wachten.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Er zijn ook meer mooie benaderingen van "door de gebruiker aangestuurd" die ik niet persoonlijk heb getest in een andere stack-overflow vraag .