馃У Jobs y Queues: tareas en segundo plano
Aprende a ejecutar tareas en segundo plano con Laravel Queues
Laravel ofrece un sistema poderoso para ejecutar tareas largas o repetitivas en segundo plano mediante Jobs y Queues. Estas herramientas ayudan a mejorar el rendimiento y la experiencia del usuario, delegando procesos pesados (como el env铆o de correos o generaci贸n de reportes) fuera del flujo principal.
⚙️ ¿Qu茅 es una Queue?
Una Queue (cola) almacena tareas pendientes llamadas Jobs para ser procesadas m谩s tarde por un
worker o proceso en segundo plano.
Laravel puede usar varios drivers para colas como database, redis, beanstalkd, o sync.
馃З Crear un Job en Laravel
Para crear un nuevo Job, ejecuta el siguiente comando en tu terminal:
php artisan make:job EnviarCorreoBienvenida
Esto genera un archivo en app/Jobs/EnviarCorreoBienvenida.php.
Ejemplo de contenido b谩sico:
namespace App\Jobs;
use App\Mail\CorreoBienvenida;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Mail;
class EnviarCorreoBienvenida implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $usuario;
public function __construct($usuario)
{
$this->usuario = $usuario;
}
public function handle(): void
{
Mail::to($this->usuario->email)->send(new CorreoBienvenida($this->usuario));
}
}
El m茅todo handle() contiene la l贸gica que se ejecutar谩 en segundo plano.
El Job implementa ShouldQueue para ser procesado por una cola.
馃殌 Enviar un Job a la cola
Desde un controlador o evento, puedes enviar el Job as铆:
use App\Jobs\EnviarCorreoBienvenida;
use App\Models\User;
public function registrar(Request $request)
{
$user = User::create($request->all());
EnviarCorreoBienvenida::dispatch($user);
return redirect()->back()->with('success', 'Usuario registrado, el correo se enviar谩 en segundo plano.');
}
馃 Procesar la cola
Para ejecutar las tareas en cola, abre tu terminal y ejecuta:
php artisan queue:work
Esto iniciar谩 el worker que procesar谩 los Jobs pendientes.
馃挰 Ejemplo visual: simulador de tarea en segundo plano
A continuaci贸n ver谩s una simulaci贸n de c贸mo Laravel procesa un Job en segundo plano. Presiona el bot贸n para ejecutar una tarea ficticia (como enviar un correo).
馃У Simulador de Cola de Trabajo
Haz clic en el bot贸n para procesar una tarea:
馃摝 Configuraci贸n de colas
En el archivo .env puedes definir el driver que Laravel usar谩 para manejar las colas:
QUEUE_CONNECTION=database
Si eliges database, debes crear la tabla de Jobs con:
php artisan queue:table
php artisan migrate
馃摎 Ejemplo visual de tabla de Jobs
| ID | Job | Estado | Intentos | Creado |
|---|---|---|---|---|
| 1 | EnviarCorreoBienvenida | Procesado | 1 | 2025-11-02 10:45:22 |
| 2 | GenerarReporteMensual | En cola | 0 | 2025-11-02 10:46:10 |
- Enviar correos masivos.
- Procesar im谩genes o videos.
- Generar reportes grandes.
- Sincronizar datos externos sin bloquear al usuario.
馃搵 En resumen:
- Los Jobs ejecutan tareas en segundo plano.
- Usa
dispatch()para enviarlos a la cola. - Procesa la cola con
queue:work. - Mejoran el rendimiento y experiencia del usuario.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias