Creación y envío de jobs
Genere una clase de job con Artisan y envíela desde los controladores.
Creación y envío de jobs es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué es un Job?
Un job es una clase PHP que encapsula una unidad de trabajo en cola. Cada job implementa handle(), que el trabajador de la cola llama para ejecutar la tarea.
Generar un Job
Use Artisan para crear una clase de job. La opción --queue hace que se pueda poner en cola (es el valor predeterminado).
$ php artisan make:job SendWelcomeEmailEstructura de una clase Job
Un job tiene un método handle() y puede recibir datos mediante su constructor.
<?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));
}
}Enviar un Job
Envíe el job desde cualquier lugar de su aplicación.
<?php
// Dispatch to queue:
SendWelcomeEmail::dispatch($user);
// Dispatch with delay:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));
// Dispatch synchronously (bypass queue):
SendWelcomeEmail::dispatchSync($user);Helpers de dispatch
También puede utilizar el helper global dispatch().
<?php
dispatch(new SendWelcomeEmail($user))
->onQueue("emails")
->delay(now()->addHour());onQueue()
Dirija el job a una cola con nombre específica al enviarlo.
<?php
SendWelcomeEmail::dispatch($user)->onQueue("emails");onConnection()
Dirija el job a una conexión de cola específica (por ejemplo, SQS para un job y Redis para otro).
<?php
SendWelcomeEmail::dispatch($user)->onConnection("sqs");Serializar modelos
El trait SerializesModels garantiza que los modelos Eloquent enviados al job se serialicen por su ID y que el trabajador los vuelva a obtener de la base de datos, evitando datos obsoletos.
afterResponse()
Envíe un job después de enviar la respuesta HTTP al usuario; este no tiene que esperar al tiempo adicional del envío.
<?php
App::terminating(fn () => SendWelcomeEmail::dispatch($user));Probar Jobs
Use Queue::fake() en las pruebas para comprobar que los jobs se envían sin ejecutarlos realmente.
<?php
Queue::fake();
$this->post("/register", $data);
Queue::assertPushed(SendWelcomeEmail::class);Jobs únicos
Implemente ShouldBeUnique para evitar que se acumulen en la cola jobs duplicados con los mismos datos.
Resumen
Genere jobs con Artisan. Implemente ShouldQueue y handle(). Envíelos con ::dispatch(). Diríjalos a colas con onQueue(). Pruébelos con Queue::fake().
Comprobación rápida
¿Qué interfaz permite poner una clase Job en cola?
Preguntas frecuentes
¿La lección «Creación y envío de jobs» es gratis?
Sí — el texto completo de «Creación y envío de jobs» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Creación y envío de jobs»?
Genere una clase de job con Artisan y envíela desde los controladores. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Creación y envío de jobs»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Conceptos y controladores de colas
- Creación y envío de jobs
- Reintentos, retrasos y encadenamiento de jobs
- Monitorización de colas con Laravel Horizon