Enviar notificaciones en Laravel a usuarios no registrados
Enviar notificaciones en Laravel a usuarios no registrados


Si no estamos trabajando con Laravel y queremos programar tareas cada X tiempo de forma automática en un servidor deberemos programar para cada una de ellas un Cron, algo que se puede volver muy pesado y complejo de mantener.

Para ejecutar tareas programadas con Laravel simplemente deberemos ejecutar el siguiente comando en nuestro servidor una única vez.

El comando anterior generará un Cron que se ejecutará cada minuto, y nosotros junto con Laravel podremos programar tantas tareas como queramos para que se ejecuten cada minuto, cada día o cada mes, y todo de forma sencilla.

Una de las mejores opciones para generar tareas programadas con Laravel es combinando esta funcionalidad con los comandos, así que vamos a aplicar este ejemplo, por lo tanto generemos un comando.

Este comando habrá generado el archivo /app/Console/Commands/GenerateRandomUser.php, vamos a abrirlo y vamos a modificar su código por el siguiente.

Antes de nada vamos a fijarnos en las propiedades $signature y $description y a continuación ejecuta el siguiente comando en tu terminal.


Veremos entre otros el siguiente nuevo comando disponible.



Sabiendo esto, lo único que nos queda por saber es que cuando ejecutemos el comando php artisan generator:random_user se ejecutará será el método handle, y en nuestro caso cómo puedes ver simplemente se creará un usuario de forma aleatoria, ¡ya sabemos crear comandos!

Ejecutar comandos de forma programada con Laravel

Ahora vamos a ver lo sencillo que es utilizar las tareas programadas con Laravel para que nuestro comando se ejecute cada minuto, para ello, vamos a abrir el archivo app/Console/Kernel.php y lo reemplazamos por el siguiente.

Por llamar a nuestro comando dentro del método schedule utilizando el método everyMinute Laravel será capaz de generar un usuario aleatorio cada minuto en nuestra base de datos.

Para terminar simplemente debes ejecutar en tu servidor el siguiente comando y todo estará funcionando.

Yo estoy trabajando en mi entorno local con MAC, para poder ejecutar el mismo comando sin la necesidad de crear un Cron lo que hago es ejecutar el siguiente comando que se ejecuta automáticamente cada 60 segundos y hace exactamente lo mismo.