Criação e despacho de tarefas
Gere uma classe de tarefa com o Artisan e envie-a a partir dos controladores.
Criação e despacho de tarefas é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
O que é uma tarefa?
Uma tarefa é uma classe PHP que encapsula uma unidade de trabalho enfileirado. Cada tarefa implementa handle(), que o trabalhador da fila chama para executar a tarefa.
Gerando uma tarefa
Use o Artisan para criar uma classe de tarefa. A opção --queue faz com que ela seja enfileirável (padrão).
$ php artisan make:job SendWelcomeEmailEstrutura da classe de tarefa
Uma tarefa tem um método handle() e pode receber dados por meio de seu construtor.
<?php
namespace App\Jobs;
use App\Models\User;
use App\Mail\WelcomeEmail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\SerializesModels;
class SendWelcomeEmail implements ShouldQueue
{
use Dispatchable, Queueable, SerializesModels;
public function __construct(private User $user) {}
public function handle(): void
{
Mail::to($this->user)->send(new WelcomeEmail($this->user));
}
}Despachando uma tarefa
Desfaça a tarefa de qualquer lugar da sua aplicação.
<?php
// Dispatch to queue:
SendWelcomeEmail::dispatch($user);
// Dispatch with delay:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));
// Dispatch synchronously (bypass queue):
SendWelcomeEmail::dispatchSync($user);Auxiliares de despacho
Também é possível usar o auxiliar global dispatch().
<?php
dispatch(new SendWelcomeEmail($user))
->onQueue("emails")
->delay(now()->addHour());onQueue()
Direcione a tarefa para uma fila nomeada específica ao despachá-la.
<?php
SendWelcomeEmail::dispatch($user)->onQueue("emails");onConnection()
Direcione a tarefa para uma conexão de fila específica (por exemplo, SQS para uma tarefa e Redis para outra).
<?php
SendWelcomeEmail::dispatch($user)->onConnection("sqs");Serializando modelos
O traço SerializesModels garante que os modelos Eloquent passados à tarefa sejam serializados pelo ID e recuperados novamente do banco de dados pelo trabalhador — evitando dados desatualizados.
afterResponse()
Despache uma tarefa depois que a resposta HTTP for enviada ao usuário — o usuário não espera pelo tempo adicional do despacho.
<?php
App::terminating(fn () => SendWelcomeEmail::dispatch($user));Testando tarefas
Use Queue::fake() nos testes para verificar se as tarefas foram despachadas sem realmente executá-las.
<?php
Queue::fake();
$this->post("/register", $data);
Queue::assertPushed(SendWelcomeEmail::class);Tarefas únicas
Implemente ShouldBeUnique para impedir que tarefas duplicadas com os mesmos dados se acumulem na fila.
Resumo
Gere tarefas com o Artisan. Implemente ShouldQueue e handle(). Despache com ::dispatch(). Direcione tarefas para filas com onQueue(). Teste com Queue::fake().
Verificação rápida
Qual interface torna uma classe de tarefa enfileirável?
Perguntas Frequentes
A aula “Criação e despacho de tarefas” é grátis?
Sim — o texto completo de “Criação e despacho de tarefas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Criação e despacho de tarefas”?
Gere uma classe de tarefa com o Artisan e envie-a a partir dos controladores. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Criação e despacho de tarefas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Conceitos e drivers de filas
- Criação e despacho de tarefas
- Novas tentativas, atrasos e encadeamento de tarefas
- Monitoramento de filas com Laravel Horizon