Una idea:
Para empezar definiria dos tablas
tareas = (fecha, hora, tipo)
tipos = (volatil, diaria, semanal, mensual, anual, secular)
Cada vez que toque el turno de ejecutarse una tarea examinas su tipo.
- Si es volátil (sólo se realiza una vez) ejecutas la tarea y borras el registro.
- Si es diaria ejecutas la tarea y actualizas el campo fecha sumándole un día.
- Si es semanal ejecutas la tarea y actualizas el campo fecha sumándole una semana.
- etc.
Cada x tiempo consultas la base:
Código SQL
[-]
select * from tareas
where
fecha = today() and
hora >= now()
La sintaxis exacta te la dejo de tarea (primera tarea a programar
)
Las tareas del día actual que ya se hayan realizado no entrarán dentro de esta selección pues ya les actualizaste la fecha, de manera que la selección te devolverá las tareas más próximas al momento de la consulta que aún no se han realizado.
La precisión será mayor mientras más frecuentemente consultes al servidor. Si consultas, digamos, cada cinco minutos, cabrá la posibilidad de que alguna tarea se ejecute con cinco minutos de retraso.
// Saludos