Volver a la página principal
miércoles 25 diciembre 2024
31

Cómo ejecutar comando en Laravel de manera programada

1. Crear un Comando Personalizado

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
    }
}

2. Definir la Programación 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.

3. Configurar el Cron Job en el Servidor

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.

4. Verificar las Tareas Programadas

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.

Etiquetas:
php laravel
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer