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.