najlepiej cron - nieraz z poziomu php do nieeeę dodać polecenie czy to przez zmianę nazwy pliku czy inaczej - wszystko zależy od hostingu - dodane zadanie do crona będzie bardziej odporne na reset serwera niż to co podam niżej...
a niżej to
sleep na linuxie (gdzie czas uśpienia nie jest wliczany do czasu wykonywania skryptu) - na windowsie musiałbyś sleep dawać okresowo i przeplatać z
set_time_limit by czas wykonywania skryptu wyzerować i gdzieś to w pętli zliczać czy wykonać operacje już czy nie...
pasuje zrobić jeszcze jakiś plik kontrolny gdzie zapisywałbyś przyszłe akcje i jakąś wiadomość sprawdzającą np po resecie serwera czy dany skrypt php "chodzi" i jeśli nie to go uruchomić z odliczaniem...
zresztą zapoznaj się z całym tematem:
uruchamianie pliku php co 30s bez właczonego kompa - na serwie - powstał tam mały oftopick ale w zasadzie jest tam raczej to czego szukasz - ale tylko przepis a nie gotowiec