Имате 3 възможности. Моята препоръка:Използвайте cron, ако можете, управляван от потребителя, ако трябва, и daemon като последна възможност.
(1) cron (както е споменато в коментарите)
cron е планировчик за Linux системи, който ще изпълнява задание от командния ред на вашата система. Влизате във вашия сървър през ssh, напишете crontab -e
и добавете ред като този:
4 5 * * * php /path/to/my/script.php
Това ще изпълнява скрипта в 5:04 сутринта всеки ден.
<?php
// /path/to/my/script.php
// Do something
Някои хостинг услуги позволяват въвеждане на cron задачи с GUI. Има и външни cron услуги, които ще извикат URL вместо вас в определени моменти.
(2) демон
Това е най-усъвършенстваната опция и също така най-малко надеждната:Вие изпълнявате скрипт от команден ред, който съдържа безкраен цикъл. След това скриптът периодично проверява състоянието и отговаря на него. Тъй като има вероятност да се срине след месеци на работа, трябва да имате втори скрипт, за да го рестартирате, в случай че се случи. Това е много работа, но е най-гъвкавият подход.
<?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. управляван от потребителя
Ако имате прилично количество трафик на вашия сайт, можете просто да включите тази работа в долния колонтитул на страницата си, когато няма повече изход. Уверете се, че този код е бърз или нещастен потребител ще го чака.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Има и по-фантастични подходи на „ръководен от потребителя“, които не съм тествал лично в друго препълване на стека въпрос .