Я бы так и сделал, сохрани настройки в базе данных и, при необходимости, проверил, стоит ли запускать задачу.
Вы можете запускать cronjob проверки / инициации каждую минуту. Просто убедитесь, что проверочный код не слишком тяжелый (быстро выходит). Запрос к базе данных для пары строк не должен быть проблемой для выполнения каждую минуту.
Если «задача» действительно тяжелая, вы должны рассмотреть демон вместо cronjob, вызывающего php. Вот хорошее и простое для чтения введение: Создание демонов в PHP
Редактировать: Я считал само собой разумеющимся, что даже если задачи выполняются только «один раз», у вас есть несколько пользователей, которые равны 1: 1 «один раз», таким образом, задания для каждого пользователя. Если нет, то at
(как говорится в комментариях) выглядит достойно эксперимента.