В свое время понадобилась такая реализация, можно сделать двумя способами, оба на мой взгляд костыльные:
1) сделать бесконечный цикл по файлу (а-ля фиговый демон), который будет интеллектуально долбить пул по БД, допустим в 14-15 нужно отправить сообщение 2 юзерам, их берём во временное хранилище и смотрим, сколько нужно спать до следующей отправки сообщения, потом sleep(), и так пока не отправятся всем сообщения.
2) Cron динамически сделать запускаемый скрипт, для этого есть масса инструментов.
NooooN, Vyzhym,
Бесконечный цикл это не вариант, он может остановиться, произойти сбой, кончится память (такое тоже бывает), и тогда придется создавать еще менеджера, который по крону должен запускаться и проверять жив ли этот процесс с бесконечным циклом и в случае чего перезапускать его заново.
Вариант с кроном самый рабочий. В кроне можно задать частоту вызова. Процесс запустился, сделал что нужно и отключился, память и процессор не занимает в этот момент.