Debes tener una tabla en la base de datos en la que guardes todas las "tareas programadas". Usando
cronjobs puedes correr un script internamente en el servidor, digamos cada minuto, que evalue el contenido de esa tabla y realice los cambios necesarios.
Es un sistema amplio, así que debes investigar tu solo y formular aquí tus dudas y preguntas concretas. Pero esa es la idea general del proceso.