Revista Tecnología

Programar Tareas en Laravel 5.6 (Task Scheduling)

Publicado el 03 julio 2018 por Juan Ricardo Castro Lurita @pepoflex

Laravel el potente Framework PHP nos da la posibilidad de Programar Tareas en nuestro Servidor, estas tareas se ejecutarán incluso cuando no estés pendiente de tu servidor, nos ayuda a resolver múltiples tareas y a facilitarnos la vida, veamos como programar una tarea en nuestro servidor así veremos lo sencillo y rápido que es hacerlo con Laravel. Usaremos la versión 5.6 de Laravel.

Lo que haremos es que el servidor ejecute un comando que elimina los datos de nuestra tabla postres, este comando le indicaremos que se ejecute 1 ves por minuto.

Cron en Servidor

Ve al administrador de tu servidor y crea un nuevo Comando en el Cron y agrega el siguiente comando

* * * * * php /ruta-de-tu-proyecto/artisan schedule:run >> /dev/null 2>&1

Con ello le decimos que ejecute se ejecute el comando a cada minuto o una sola ves por minuto

Programar Tareas en Laravel 5.6 (Task Scheduling)

Tabla Postres de la DB

En nuestro servidor tenemos una tabla llamada postres con los siguientes datos, los cuales desparecerán al ejecutar el comando que crearemos a continuación

Programar Tareas en Laravel 5.6 (Task Scheduling)

Task Scheduling

Las tareas las debemos especificar en el archivo Kernel.php lo podemos encontrar en la carpeta app > Console > Kernel.php dentro del conjunto de archivos de Laravel.

En el archivo Kernel.php instanciamos el Trait DB para decirle a Laravel que usaremos la Base de datos

use DB;

Luego en la función schedule usamos el método call para decirle que borre los datos de la tabla postres a cada minuto con el método everyMinute(); 

/**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            DB::table('postres')->delete();
        })->everyMinute();
    }

El código completo del archivo Kernel.php quedaría así:

<?php

namespace App\Console;

use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //Commands\ComandoPersonalizado::class
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            DB::table('postres')->delete();
        })->everyMinute();
    }

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

Tras esperar un minuto que se ejecuta el comando, revisamos nuestra tabla postres y los datos han sido borrados

Programar Tareas en Laravel 5.6 (Task Scheduling)

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.


Volver a la Portada de Logo Paperblog