Cómo usar Cron Jobs (con ejemplos reales para WordPress y Laravel)
Esta guía explica cómo crear, editar y administrar Cron Jobs desde cPanel. Incluye ejemplos prácticos para WordPress, Laravel, scripts PHP personalizados, ejecución programada segura, buenas prácticas y resolución de problemas comunes.
Configuración de tareas programadas (Cron Jobs) en cPanel.
Resumen rápido
- Los Cron Jobs ejecutan tareas automáticas según una programación.
- Configúralos desde cPanel → Cron Jobs.
- Útiles para limpiezas, backups, colas, indexaciones o tareas recurrentes.
- WordPress y Laravel requieren comandos especiales.
- Verifica los logs cuando una tarea no se ejecuta.
Crear un Cron Job
Pasos
- En cPanel ve a Cron Jobs.
- En "Common Settings" selecciona una frecuencia (cada 5 minutos, cada hora, etc.).
- Escribe el comando a ejecutar.
- Haz clic en Add New Cron Job.
Formato básico del cron
* * * * * /usr/bin/php -q /home/usuario/public_html/script.php
Los cinco asteriscos representan minuto, hora, día, mes y día de la semana.
Ejemplos de comandos
1) Ejecutar un script PHP
/usr/bin/php -q /home/usuario/public_html/tareas/limpieza.php
2) Ejecutar un curl (alternativa)
Útil si tu script está accesible por URL.
/usr/bin/curl -s https://tudominio.com/cron.php >/dev/null 2>&1
3) Guardar salida del Cron en un log
Ideal para depurar errores.
/usr/bin/php -q /home/usuario/script.php >> /home/usuario/cron.log 2>&1
Ejemplos para WordPress (WP-Cron)
WordPress usa un "cron interno" que depende de visitas. Para mayor precisión, se recomienda reemplazarlo con un Cron Job real.
1) Desactivar cron interno
Agrega esto en wp-config.php:
define('DISABLE_WP_CRON', true);
2) Crear cron real (cada 5 minutos)
*/5 * * * * /usr/bin/php -q /home/usuario/public_html/wp-cron.php >/dev/null 2>&1
Tareas que ejecuta WP-Cron
- Limpieza de transients.
- Programación de publicaciones.
- Tareas de plugins (SEO, backups, caché).
- Actualizaciones automáticas.
Ejemplos para Laravel
Laravel usa un scheduler que debe ejecutarse cada minuto.
1) Cron recomendado
* * * * * /usr/bin/php /home/usuario/laravel/artisan schedule:run >> /dev/null 2>&1
Ubicación del proyecto
Si tu instalación está en public_html, ajusta:
/home/usuario/public_html/artisan schedule:run
Ejemplos típicos del scheduler
- Procesamiento de colas.
- Limpieza de logs.
- Verificación de suscripciones.
- Tareas personalizadas cada hora, día o semana.
Tareas comunes útiles
- Eliminar archivos temporales.
- Ejecutar backups automáticos externos.
- Enviar reportes a correo.
- Sincronizar APIs.
- Actualizar cachés.
Problemas comunes y soluciones
- El cron no se ejecuta
- Revisa la ruta del archivo, permisos y el log generado.
- Error "Permission denied"
- El archivo no tiene permisos de ejecución o la ruta es incorrecta.
- WP-Cron no corre
- Verifica que
DISABLE_WP_CRONesté configurado y que el cron real apunte awp-cron.php. - Laravel scheduler no hace nada
- Asegúrate de que Artisan tenga permisos adecuados y la ruta sea correcta.
- El cron se ejecuta demasiadas veces
- Evita duplicar tareas. Revisa que no exista más de un cron con el mismo comando.
Buenas prácticas
- Usa logs para depuración.
- No programes tareas pesadas cada minuto si no es necesario.
- Organiza tus crons con comentarios en tus scripts.
- Revisa permisos correctos (644/755).
- Evita exponer scripts públicos mediante URL si tienen acceso sensible.
Plantilla para abrir ticket (Cron Jobs)
Asunto: Problema con Cron Job — [mi-dominio.com] Hola equipo, Detalles: - Comando del cron: [copiar exactamente el comando] - Frecuencia: [cada 5 min / cada hora] - Archivo o script afectado: - Ubicación completa: [/home/usuario/...] - Mensaje de error (si aplica): - ¿Genera salida en log?: [sí/no] - ¿Es WordPress o Laravel?: [sí/no] Gracias, [Tu nombre]