0Pricing
PHP Academy · Aula

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 SendWelcomeEmail

Estrutura 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

  1. Conceitos e drivers de filas
  2. Criação e despacho de tarefas
  3. Novas tentativas, atrasos e encadeamento de tarefas
  4. Monitoramento de filas com Laravel Horizon
← Voltar para PHP Academy