Запускайте по крону раз в минуту скрипт, который выбирает задачи на исполнение, отправляет уведомления и ставит флаг выполненности. Если что-то не сработает один раз всегда можно, хоть и с опозданием, выполнить при следующем запуске. Самое простое, надежное и не ресурсоемкое решение, имхо.
Демоны зависнут, отожрут память.
Писать в крон каждое задание — трудности и неточности редактирования (надо или переписывать все задачи, или искать по id, который туда, в cron, еще надо как-то добавить).
Есть еще один вариант, но он Вам вряд ли подойдет, т.к. Вы скорей всего уведомления на почту шлете?