Automatiza con confianza las tareas críticas en Laravel: desde enviar correos a las 3 a. m. hasta limpiar tablas, el sistema de programación con cron y el Kernel centraliza todo en un solo punto. Aquí verás cómo usar Artisan, el método schedule y controles como ejecución en un único servidor, modo mantenimiento y logs en storage.
¿Cómo programar tareas en Laravel con cron y Kernel?
Programar tareas en Laravel se hace en el método schedule de la clase Kernel ubicada en app/console/Kernel.php. Con un único cron que ejecuta php artisan schedule:run, el sistema revisa qué tareas están pendientes y las dispara automáticamente.
¿Dónde registrar comandos personalizados de Artisan?
Registra tus comandos en la clase Kernel de app/console/Kernel.php.
Ejemplos mencionados: "sendnewsletter command" y "sendemail-verification command".
El comando de newsletter tiene una opción --s para indicar si debe ejecutarse directamente.
Al ejecutar manualmente, solicita confirmación antes de enviar correos. Si no hay confirmación: "No se enviaron correos".
¿Cómo definir tareas con closures y frecuencias?
En schedule puedes usar funciones anónimas y devolver un simple echo "Hola".
Si no defines frecuencia y ejecutas el scheduler, verás "Hola" al correr el comando.
Cambiar la frecuencia a cada minuto mostrará "Hola" cuando corresponda. A cada cinco minutos, verás la salida solo al llegar el minuto cinco del servidor.
Usa un único cron que llame al scheduler de Laravel.
php artisan schedule:run
Configura un crontab del sistema operativo o servidor para que se ejecute de forma periódica.
Recuerda: el scheduler verifica y ejecuta lo que esté pendiente en Kernel.
¿Qué métodos de frecuencia y control ofrece schedule?
Además de las frecuencias como diariamente, cada minuto o cada cinco minutos, existen métodos para controlar el comportamiento: ejecutar en un único servidor, permitir ejecución en modo mantenimiento, evitar solapamientos y enviar salida a un archivo de log.
¿Cómo fijar frecuencias como daily, cada minuto o Mondays?
Comando de newsletter que corre todos los lunes usando Mondays.
Comando de recordatorio de verificación de email que corre diariamente con la opción --class.
Agrega el archivo de log al gitignore para no subirlo al repositorio.
Verifica en la carpeta storage que el archivo inspire.log se haya creado.
¿Qué buenas prácticas y próximos pasos aplicar?
Usa estos controles para ejecutar solo una instancia, tolerar mantenimientos y dejar huella de cada ejecución en logs. Así, enviar newsletters los lunes o recordatorios de verificación a diario será más confiable.
Un solo cron dispara todo con php artisan schedule:run.
Define frecuencia adecuada: diaria, minuto a minuto o cada cinco minutos.
Limita a un servidor con on_server para evitar duplicados.
Permite ejecución en mantenimiento con even_in_maintenance_mode.
Evita solapamientos con without_overlapping.
Centraliza logs en storage con send_output_to y exclúyelos con gitignore.
¿Te animas a ajustar el comando de newsletter con estas características y contar cómo lo harías en tu proyecto? Comparte tu enfoque en los comentarios.