Redis Queue v Laravel: Řízení front

In Laravel, Redis Queue je výkonný nástroj používaný ke zpracování dlouhotrvajících a časově náročných úkolů bez čekání na jejich dokončení. Pomocí Redis Queue, můžete zařadit do fronty úlohy, jako je odesílání e-mailů, zpracování úloh na pozadí nebo generování sestav, a provádět je asynchronně, což zlepšuje výkon aplikací a zlepšuje uživatelský komfort.

Základní kroky k použití Redis Queue v Laravel

Konfigurovat Redis

Nejprve musíte nainstalovat a nakonfigurovat Redis v Laravel. Ujistěte se, že jste nainstalovali Redis balíček přes Composer a nakonfigurovali Redis parametry připojení v .env souboru.

CACHE_DRIVER=redis  
REDIS_HOST=127.0.0.1  
REDIS_PASSWORD=null  
REDIS_PORT=6379  

Definujte úlohy

Dále musíte definovat úlohy, které chcete umístit do fronty. Tyto úlohy budou prováděny asynchronně a nezávisle na hlavním zpracování aplikace.

// Example defining a job to send an email  
namespace App\Jobs;  
  
use Illuminate\Bus\Queueable;  
use Illuminate\Contracts\Queue\ShouldQueue;  
use Illuminate\Foundation\Bus\Dispatchable;  
use Illuminate\Queue\InteractsWithQueue;  
use Illuminate\Queue\SerializesModels;  
use Illuminate\Support\Facades\Mail;  
  
class SendEmailJob implements ShouldQueue  
{  
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;  
  
    protected $user;  
  
    public function __construct($user)  
    {  
        $this->user = $user;  
    }  
  
    public function handle()  
    {  
        // Handle sending an email to the user  
        Mail::to($this->user->email)->send(new WelcomeEmail());  
    }  
}  

Zařaďte úlohy do fronty

Když chcete provést úlohu, jednoduše ji zařadíte do fronty pomocí funkcí dispatch nebo dispatchNow:

use App\Jobs\SendEmailJob;  
use Illuminate\Support\Facades\Queue;  
  
// Put the job into the queue and perform asynchronously  
Queue::push(new SendEmailJob($user));  
  
// Put the job into the queue and perform synchronously(without waiting)  
Queue::push(new SendEmailJob($user))->dispatchNow();  

Zpracovat úlohy z fronty

Poté, co byla úloha zařazena do fronty, musíte nastavit a Worker pro provádění úloh ve frontě. Laravel přichází s a artisan command spustit worker:

php artisan queue:work

Bude worker nepřetržitě naslouchat a provádět úlohy ve frontě. Můžete nakonfigurovat, worker aby zpracovával počet úloh a dobu čekání mezi cykly zpracování.

Správa úloh ve frontě

Laravel poskytuje rozhraní pro správu, kde můžete sledovat a řídit úlohy ve frontě. Můžete zobrazit počet čekajících úloh, dobu zpracování a dokonce i opakování neúspěšných úloh.

 

Závěr Použití Redis Queue in Laravel je efektivní způsob, jak zvládnout dlouhotrvající úkoly bez narušení hlavního zpracování aplikace. Pomocí Redis Queue, můžete zlepšit výkon aplikace a zlepšit uživatelskou zkušenost.