„In“ Laravel yra Redis Queue galingas įrankis, naudojamas ilgai trunkančioms ir daug laiko reikalaujančioms užduotims atlikti nelaukiant, kol jos bus baigtos. Naudodami Redis Queue galite į eilę užduotis, pvz., el. laiškų siuntimą, foninių užduočių apdorojimą arba ataskaitų generavimą, ir vykdyti jas asinchroniškai, pagerindami programos našumą ir pagerindami naudotojo patirtį.
Pagrindiniai naudojimo Redis Queue žingsniai Laravel
Konfigūruoti Redis
Pirmiausia turite įdiegti ir Redis sukonfigūruoti Laravel. Įsitikinkite, kad įdiegėte Redis paketą per Composer ir sukonfigūravote Redis ryšio parametrus faile .env
.
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Apibrėžkite darbus
Tada turite apibrėžti darbus, kuriuos norite įtraukti į eilę. Šie darbai bus atliekami asinchroniškai ir nepriklausomai nuo pagrindinio paraiškos apdorojimo.
// 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());
}
}
Įdėkite darbus į eilę
Kai norite atlikti darbą, tiesiog įtraukite jį į eilę naudodami dispatch
arba dispatchNow
funkcijas:
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();
Apdorokite darbus iš eilės
Kai darbas įtrauktas į eilę, turite nustatyti a, Worker kad būtų vykdomos eilėje esančios užduotys. Laravel ateina su artisan command paleisti worker:
php artisan queue:work
Jis worker nuolat klausys ir vykdys eilėje esančius darbus. Galite sukonfigūruoti worker tvarkyti užduočių skaičių ir laukimo laiką tarp apdorojimo raundų.
Tvarkykite eilėje esančius darbus
Laravel suteikia valdymo sąsają, kurioje galite stebėti ir valdyti eilėje esančius darbus. Galite peržiūrėti laukiančių užduočių skaičių, apdorojimo laiką ir net bandyti iš naujo atlikti nepavykusias užduotis.
Išvada Naudojimas yra veiksmingas būdas atlikti ilgai trunkančias užduotis Redis Queue, Laravel netrikdant pagrindinio programos apdorojimo. Naudodami Redis Queue galite pagerinti programos našumą ir pagerinti vartotojo patirtį.