Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 18, 2021 08:55 pm GMT

Gerenciando Tarefas Agendadas do Laravel no Banco de Dados

Tarefas agendadas so uma tima maneira de executar processos repetitivos de maneira automatizada em nossos projetos, basta definir as tarefas e escolher os momentos em que elas sero executadas e pronto, pode deixar o resto do trabalho com o cron do servidor.

Geralmente essa definio dos momentos em que as tarefas iro rodar fica dentro do projeto e acaba sendo suficiente em muitos casos, porm, essa maneira de gerenciamento acaba sendo um empeclio quando se precisa alterar o horrio em que as tarefas sero executadas. Gerenciando dessa maneira, ser necessrio uma alterao no arquivo, e uma nova release do projeto para as alteraes terem efeito. Isso tambm restringe que o ajuste no horrio da tarefa seja feito somente por um desenvolvedor.

Para resolver esse problema, podemos gerenciar as tarefas agendadas no banco de dados, fazendo com que apenas a alterao de um registro j altere o funcionamento da tarefa.

No Laravel temos o pacote: Laravel Database Schedule, que permite o gerenciamento das tarefas no banco de dados e ainda fornece uma interface para que a alterao das tarefas possa ser feita de maneira mais simples e por algum sem tanto conhecimento de programao.

Instalao

Para instalar a biblioteca vamos rodar:

composer require robersonfaria/laravel-database-schedule

Aps a instalao precisamos rodar as migrations para criar as tabelas usadas pela biblioteca:

php artisan migrate

Por ltimo, exportar o arquivo de configuraes:

php artisan vendor:publish --provider="RobersonFaria\DatabaseSchedule\DatabaseSchedulingServiceProvider" --tag="config"

No arquivo de configuraes vamos alterar o restricted_access para false para o teste.

alt text

OBS: essa configurao deixa o dashboard de tarefas agendadas pblico, para restringir o acesso somente usurios autorizados deixe a propriedade como false e consulte a documentao para definir quem poder acessar.

Criando a Tarefa Agendada

Para exemplo vamos criar uma tarefa rodando:

php artisan make:command NovoComando

E configuramos o comando dessa maneira:

protected $signature = 'comando:novo-comando';protected $description = 'Novo comando teste';public function handle(): int{    $this->info('Comando rodando!');    return 0;}

Normalmente, agora seria o momento em que iramos cadastrar esse comando que criamos, no Kernel.php e configurariamos o horrio para a tarefa rodar, mas usando o database schedule no faremos isso.

Agendando a Tarefa no Banco de Dados

Aps iniciar o servidor com:

php artisan serve

Vamos acessar http://localhost:8000/schedule para entrar no dashboard.

alt text

No formulrio, vamos escolher o comando que queremos agendar, a expresso cron que vai definir quando ocorrer a execuo e marcar a opo de envio de email caso ocorra uma falha na execuo, para isso tambm vamos definir um email.

alt text

Para entender todas as opes e parmetros que podem ser configurados na tarefa agendada visite a documentao.

Aps essa configurao podemos ver no dashboard nosso comando cadastrado.

alt text

Executando as tarefas agendadas

Para testar localmente vamos rodar o comando:

php artisan schedule:run

E depois do comando rodar, se acessarmos o email cadastrado e a sesso de Histrico no dashboard veremos o resutado.

alt text

alt text

Caso ocorra algum erro, o email e histrico continuam sendo registrados.

alt text

alt text

Referncias

https://github.com/robersonfaria/laravel-database-schedule


Original Link: https://dev.to/pedropms/gerenciando-tarefas-agendadas-do-laravel-no-banco-de-dados-1l2n

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To