Operațiunile consumatoare de timp nu trebuie să blocheze firul principal al cererii utilizatorului. În Laravel, orice clasă de tip Job care implementează interfața marker ShouldQueue va fi serializată automat și trimisă într-o coadă (Redis, baza de date SQL, SQS).
Metode de trimitere:
Job::dispatch($data): trimitere instantanee în coada implicită.Job::dispatch($data)->delay(now()->addMinutes(10)): execuție întârziată.Job::dispatch($data)->onQueue('high-priority'): direcționare către o coadă cu prioritate mare.
Exemplu: Job asincron cu reîncercări automate și backoff
namespace App\Jobs;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class ProcessWelcomeEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public int $tries = 3; // Reîncearcă de maxim 3 ori în caz de eșec
public int $backoff = 60; // Pauză de 60s între reîncercări
public function __construct(public User $user) {}
public function handle(): void
{
// Trimitere efectivă a emailului...
}
}
Întrebări & Exemple de Cod:
Crearea și Trimiterea Sarcinilor Asincrone (ShouldQueue)Ai o nelămurire despre utilizarea comenzii
Crearea și Trimiterea Sarcinilor Asincrone (ShouldQueue)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.