Если не будет некоторой экономии затрат на поддержание работы скрипта в памяти, лучше использовать cron, чтобы вызывать его каждый час по мере необходимости.
0 0-2 * * * /usr/local/bin/mail-script.php
Вы можете выбрать несколько часов, используя синтаксис - или синтаксис запятой:
0 0,1,2,3 * * * /usr/local/bin/mail-script.php
Если необходимо поддерживать какую-либо форму состояния, используйте временный файл для сохранения сохраненного состояния.
Do:
> man 5 crontab
Чтобы узнать, обрабатывает ли * nix вышеупомянутые случаи.
Наконец, если вы не знаете, что скрипт должен запускаться только 2-3 раза, вам лучше поставить логику о том, «запускать или не запускать» в самом скрипте PHP, и затем просто запускайте его каждый час.