An Interest In:
Web News this Week
- April 19, 2024
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
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.
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.
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.
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.
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.
Caso ocorra algum erro, o email e histrico continuam sendo registrados.
Referncias
Original Link: https://dev.to/pedropms/gerenciando-tarefas-agendadas-do-laravel-no-banco-de-dados-1l2n
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To