Primero, necesitas crear un comando personalizado que realizará la tarea deseada. Puedes generar este comando utilizando Artisan con el siguiente comando en la terminal:
php artisan make:command NombreDelComando
Este comando creará un archivo en app/Console/Commands/NombreDelComando.php
. Dentro de este archivo, encontrarás la clase del comando donde puedes definir la lógica en el método handle()
. Por ejemplo:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class NombreDelComando extends Command
{
protected $signature = 'nombre:delcomando';
protected $description = 'Descripción del comando';
public function handle()
{
// Lógica del comando
}
}
Una vez creado el comando, puedes programarlo para que se ejecute en intervalos específicos. En Laravel 11, esto se realiza en el archivo routes/console.php
utilizando el facade Schedule
. Por ejemplo, para programar el comando para que se ejecute diariamente a la medianoche, añadirías lo siguiente:
use Illuminate\Support\Facades\Schedule;
Schedule::command('nombre:delcomando')->daily();
// o también...
Schedule::command(NombreDeLaClase::class)->daily();
Laravel ofrece una variedad de métodos para definir la frecuencia de ejecución, como ->hourly()
, ->weekly()
, ->monthly()
, entre otros. Además, puedes combinar estos métodos con restricciones adicionales para especificar días de la semana, horas específicas y más.
Para que Laravel ejecute las tareas programadas, es necesario configurar un único cron job en tu servidor que invoque el scheduler de Laravel cada minuto. Esto se logra añadiendo la siguiente línea al crontab de tu servidor:
* * * * * cd /ruta/a/tu/proyecto && php artisan schedule:run >> /dev/null 2>&1
Asegúrate de reemplazar /ruta/a/tu/proyecto
con la ruta real de tu aplicación Laravel. Esta configuración permite que Laravel gestione todas las tareas programadas internamente, sin necesidad de definir múltiples entradas de cron para cada tarea.
Para verificar las tareas programadas y su próximo tiempo de ejecución, puedes utilizar el siguiente comando de Artisan:
php artisan schedule:list
Este comando mostrará una lista de todas las tareas programadas en tu aplicación, lo que facilita su gestión y monitoreo.
Jorge García
Fullstack developer