Planificador de tareas PHP: guía completa sobre tareas cron y Task Scheduler

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Planificador de tareas PHP: guía completa



El planificador de tareas (Task Scheduler) es una herramienta críticamente importante para cualquier aplicación web que funcione con PHP. Permite automatizar la ejecución de operaciones rutinarias: envío de boletines por correo electrónico, limpieza de caché, generación de informes, sincronización de datos con API externas y mucho más. A diferencia de la ejecución manual de scripts, el planificador garantiza la ejecución oportuna y confiable de las tareas sin intervención del administrador.



Enfoques básicos para implementar un planificador en PHP



Existen dos formas principales de implementar un planificador de tareas en proyectos PHP:



  • Cron del sistema (Linux/Unix) — uso del demonio cron integrado para invocar scripts PHP según un horario.
  • Planificador personalizado (Task Scheduler) — implementación de la lógica de planificación directamente en el código PHP utilizando bucles y comprobaciones de tiempo.


1. Cron del sistema con PHP



El enfoque más común y eficiente. Usted crea un script PHP que realiza las acciones necesarias y luego agrega una entrada en el crontab del servidor.



Ejemplo de script PHP para cron (cron_job.php):



<?php// cron_job.php - realiza la limpieza de sesiones antiguasrequire_once 'config.php';require_once 'db.php';

$stmt = $pdo->prepare("DELETE FROM sessions WHERE last_activity < NOW() - INTERVAL 1 DAY");$stmt->execute();

// Registro de ejecuciónfile_put_contents('logs/cron.log', date('Y-m-d H:i:s') . " - Sesiones limpiadas", FILE_APPEND);?>


Entrada en crontab (ejecutar cada hora):



0 * * * * /usr/bin/php /var/www/html/cron_job.php


2. Task Scheduler personalizado en PHP



Si no tiene acceso al cron del sistema (por ejemplo, en un hosting compartido), puede implementar un planificador directamente en PHP. Para ello, se utiliza un script especial que se ejecuta en cada visita al sitio o mediante una solicitud HTTP.



Ejemplo de un planificador simple (task_scheduler.php):



<?phpclass TaskScheduler {    private $tasks = [];    private $lastRunFile = 'last_run.json';

public function addTask($name, callable $callback, $interval) { $this->tasks[] = [ 'name' => $name, 'callback' => $callback, 'interval' => $interval // en segundos ]; }

public function run() { $lastRun = $this->getLastRunTimes();

foreach ($this->tasks as $task) { $lastTime = $lastRun[$task['name']] ?? 0; if (time() - $lastTime >= $task['interval']) { echo "Ejecutando tarea: {$task['name']}"; call_user_func($task['callback']); $lastRun[$task['name']] = time(); } }

file_put_contents($this->lastRunFile, json_encode($lastRun)); }

private function getLastRunTimes() { if (file_exists($this->lastRunFile)) { return json_decode(file_get_contents($this->lastRunFile), true); } return []; }}

// Uso$scheduler = new TaskScheduler();

$scheduler->addTask('send_newsletter', function() { // Lógica de envío de boletín echo "Boletín enviado";}, 3600); // Cada hora

$scheduler->addTask('clean_cache', function() { // Limpieza de caché array_map('unlink', glob('cache/*.cache')); echo "Caché limpiado";}, 86400); // Una vez al día

$scheduler->run();?>


3. Planificador avanzado con soporte para expresiones CRON



Para una gestión más flexible del horario, se puede implementar soporte para expresiones cron clásicas (minuto, hora, día, mes, día de la semana).



Ejemplo de analizador de expresiones cron:



<?phpclass CronPar                    

Recommendations