Masz 3 opcje. Moja rekomendacja:używaj crona, jeśli możesz, kierowanego przez użytkownika, jeśli musisz, i demona w ostateczności.
(1) cron (jak wspomniano w komentarzach)
cron to program planujący dla systemów linux, który uruchomi zadanie wiersza poleceń w twoim systemie. Logujesz się do serwera przez ssh, wpisujesz crontab -e
i dodaj taki wiersz:
4 5 * * * php /path/to/my/script.php
Skrypt byłby uruchamiany codziennie o 5:04 rano.
<?php
// /path/to/my/script.php
// Do something
Niektóre usługi hostingowe umożliwiają wprowadzanie zadań crona za pomocą GUI. Istnieją również zewnętrzne usługi cron, które wywołają adres URL w określonym czasie.
(2) demon
Jest to najbardziej zaawansowana opcja, a także najmniej niezawodna:uruchamiasz skrypt wiersza poleceń, który zawiera nieskończoną pętlę. Skrypt następnie okresowo sprawdza stan i odpowiada na niego. Ponieważ prawdopodobnie ulegnie awarii po miesiącach działania, musisz mieć drugi skrypt, aby go zrestartować, na wypadek gdyby tak się stało. To dużo pracy, ale jest to najbardziej elastyczne podejście.
<?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. kierowany przez użytkownika
Jeśli masz przyzwoity ruch w swojej witrynie, możesz po prostu umieścić to zadanie w stopce strony, gdy nie ma już żadnych wyników. Upewnij się, że ten kod jest szybki, w przeciwnym razie pechowy użytkownik będzie na niego czekał.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Istnieją również bardziej wymyślne podejścia „napędzane przez użytkownika”, których osobiście nie testowałem w kolejnym przepełnieniu stosu pytanie .