Inicio Blog Cursos Foro

Tareas programadas en Laravel


author_post
José Luis Guisado

Laravel cuenta con Task Scheduling para el trabajo de tareas programadas, con esta funcionalidad podemos automatizar nuestro proyecto para que haga una serie de funciones en el intervalo de tiempo que queramos.

En este artículo, vamos a aprender a automatizar nuestra aplicación Laravel con scheduling, para el uso de queue (aprende sobre queues en nuestro articulo: "Queues en Laravel") en un hosting compartido con Cpanel (aprende a configurar tu aplicación laravel en un hosting con nuestro artículo: "Subir laravel a hosting".

Creando la tarea programada

Nos vamos a dirigir en nuestro proyecto al archivo kernel.php que se encuentra en app/console/kernelp.php. Una vez aquí, nos vamos a dirigir a la función schedule y vamos a programar una tarea mediante el siguiente código:

protected function schedule(Schedule $schedule)
    {
        $schedule->command('queue:work --tries=3')
        ->cron('* * * * * ')
        ->withoutOverlapping();
    }

En el articulo de las queue, vimos que teníamos que tener corriendo en nuestra terminal el comando php artisan queue:work para ejecutar las colas que tenía pendiente. De esta forma se ejecutará solo, ya que le indicamos a nuestro hosting que queremos que ejecute este comando cada minuto.

Hecho esto, solo faltaría crear un cron en nuestro hosting.

Creando cron en Cpanel

Aunque en este ejemplo estemos trabajando con Cpanel, no es necesario tenerlo, ya que muchos hosting cuenta con otro panel de control en el que también es posible crear crons.

En nuestro panel de control, nos dirigimos a la opción "Trabajos con cron", aquí crearemos un cron que ejecutará cada minuto la función schedule:

/usr/local/bin/php /ruta-proyecto/artisan schedule:run >> /dev/null 2>&1

En el comando, en la parte "ruta proyecto", hace referencia a la ruta dónde está nuestro proyecto, dónde se encuentra un archivo llamado artisan. Si no tenemos clara la ruta de nuestro proyecto, podemos ir en nuestro panel de control de nuestro hosting y en el administrador de archivos, ver la ruta que sigue hasta nuestro proyecto:

En mi caso, cambiaría el comando anterior a este otro:

/usr/local/bin/php /home/user/miproyecto/artisan schedule:run >> /dev/null 2>&1

Y de esta forma tan sencilla, tendríamos creado nuestro cron creado, ejecutando la función schedule de nuestro proyecto Laravel.

¡No te pierdas nuevas entradas! Sí­guenos en nuestras redes sociales

Preguntas relacionadas

No hay preguntas sobre este artículo.

¿Tienes alguna duda sobre el artículo? ¡Pregunta!