laravel

Handleiding voor Laravel-wachtrijen

Handleiding voor Laravel-wachtrijen
De Laravel-wachtrij is een van de handigere functies van het Laravel-framework. Deze functie wordt gebruikt om te wachten op tijdrovende taken en om taken op een later tijdstip uit te voeren om de prestaties en efficiëntie van de Laravel-toepassing te verbeteren. Deze functie biedt verschillende soorten wachtrijen in back-ends, zoals Amazon SQS, Redis, Beanstalk, synchrone driver of relationele database. Er wordt een null-wachtrijstuurprogramma gebruikt om taken in de wachtrij te verwijderen. Het configuratiebestand van de wachtrij wordt opgeslagen op de locatie config/wachtrij.php. Een veelvoorkomend voorbeeld van het gebruik van de Laravel-wachtrij is het verzenden van e-mails. Wanneer het nodig is om een ​​groot aantal e-mails in de Laraval-applicatie af te handelen, is het beter om Laravel-wachtrijen te gebruiken om de verwerking te versnellen. Deze tutorial laat zien hoe je Laravel-wachtrijen gebruikt om een ​​groot aantal e-mails te verzenden.

Vereisten

Voer eerst de volgende taken uit voordat u aan deze zelfstudie begint:

  1. Installeer een nieuw Laravel-project
  2. De databaseverbinding instellen
  3. Stel de configuratie in voor het verzenden van de e-mails (u kunt de zelfstudie voor het verzenden van e-mail bekijken om e-mail te verzenden met SMTP)

Tabel maken

U moet de maken banen tabel in de database om alle wachtrijen op te slaan. Voer de volgende opdracht uit vanaf de terminal om het migratiebestand voor de . te maken banen tafel.

$ php artisan wachtrij:tabel

U kunt het migratiebestand openen vanaf de locatie database/migraties/. Het bestand bevat de volgende inhoud:.

gebruik Illuminate\Database\Migrations\Migration;
gebruik Illuminate\Database\Schema\Blueprint;
gebruik Illuminate\Support\Facades\Schema;
class CreateJobsTable breidt migratie uit

/**
* Voer de migraties uit.
*
* @return ongeldig
*/
publieke functie omhoog()

Schema::create('jobs', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('wachtrij')->index();
$table->longText('payload');
$table->unsignedTinyInteger('pogingen');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
);

/**
* Keer de migraties om.
*
* @return ongeldig
*/
publieke functie down()

Schema::dropIfExists('banen');

Voer de volgende opdracht uit vanaf de terminal om de . te maken baan tafel.

$ php artisan migreren

Mailklasse maken

U moet een mailbare klas maken om e-mails te verzenden vanuit de Laravel-toepassing. Voer de volgende opdracht uit om de e-mailklasse met de naam . te maken E-mail verzenden op de locatie app/Mail.

$ php artisan make:mail SendEmail

De inhoud van deze klasse wordt hieronder weergegeven:. De bestandsnaam van de weergave die wordt gebruikt in de bouwen() methode wordt gemaakt in het volgende deel van deze tutorial.

naamruimte App\Mail;
gebruik Illuminate\Bus\Queueable;
gebruik Illuminate\Contracts\Wachtrij\ShouldWachtrij;
gebruik Illuminate\Mail\Mailable;
gebruik Illuminate\Queue\SerializesModels;
klasse SendEmail breidt Mailable uit

gebruik Queueable, SerializesModels;
/**
* Maak een nieuwe berichtinstantie.
*
* @return ongeldig
*/
publieke functie __construct()

//

/**
* Bouw het bericht.
*
* @return $this
*/
publieke functie build()

/* Definieer de weergavenaam die zal worden gebruikt voor e-mailsjabloon */
retourneer $this->view('email');

Weergave maken

Maak het weergavebestand met de naam e-mail.blad.php met de volgende inhoud die wordt verzonden als de e-mailtekst.

Welkom bij Linux Hint


Leer Laravel gemakkelijk

Een baanklasse maken

Voer de volgende opdracht uit om een ​​taakklasse te maken:. De bestandsnaam van de taakklasse met de naam Email verzenden.php wordt gemaakt op de locatie app/vacatures.

$ php artisan make:job VerzendenE-mail

De inhoud van de Email verzenden.php wordt hieronder weergegeven:. U moet een geldig e-mailadres instellen in de naar() methode van de handvat() functie om te testen of de code goed werkt. Stel het geldige e-mailadres in in plaats van 'E-mailadres ontvanger' binnen in de naar() methode om te controleren of de wachtrij goed werkt.

naamruimte App\Vacatures;
gebruik Illuminate\Bus\Queueable;
gebruik Illuminate\Contracts\Wachtrij\ShouldWachtrij;
gebruik Illuminate\Foundation\Bus\Dispatchable;
gebruik Illuminate\Queue\InteractsWithQueue;
gebruik Illuminate\Queue\SerializesModels;
/* De nodige pakketten toegevoegd */
gebruik Mail;
gebruik App\Mail\SendEmail;
class SendingEmail implementeert ShouldQueue

gebruik Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Maak een nieuwe taakinstantie.
*
* @return ongeldig
*/
publieke functie __construct()

//

/**
* Voer de taak uit.
*
* @return ongeldig
*/
publieke functie handvat()

/* Maak het object van de postbare klasse en stuur een e-mail */
$e-mail = nieuwe SendEmail();
/* Stel een geldig e-mailadres in */
Mail::to('E-mailadres ontvanger ')->send($email);

Controller maken

Voer de volgende opdracht uit om een ​​controller te maken om de wachtrij af te handelen:. Wanneer de handleQueue() functie van de controller wordt uitgevoerd, de wachtrijtaak wordt gepusht en de e-mail wordt verzonden.

$ php artisan make:controller SendEmailController

SendEmailController.php

naamruimte App\Http\Controllers;
gebruik Illuminate\Http\Request;
/* Voeg de benodigde pakketten toe */
gebruik App\Vacatures\SendingEmail;
gebruik koolstof\koolstof;
klasse SendEmailController breidt Controller uit

/**
* Laravel-wachtrijen gebruiken
*/
openbare functie handleQueue()

/* Duw de nieuwe taak in de taakwachtrij */
verzending (nieuwe SendingEmail());
/* Bericht afdrukken na verzenden e-mail */
echo 'E-mail is verzonden';

Route toevoegen

Open de web.php bestand van de routes map en voeg de volgende route toe om de wachtrijtaak uit te voeren met behulp van de controller:.

Route::get('email', '[email protected]');

Voer de volgende URL in de browser uit om te controleren of de code werkt:. Open het e-mailadres van de ontvanger om te controleren of er een nieuwe e-mail is ontvangen.

http://localhost:8000/emailqueue

Vertraging toevoegen

Open de Email verzenden.php bestand opnieuw en wijzig de inhoud van de handleQueue() functie om de vertraging van vijf seconden toe te voegen aan de wachtrijtaken.

naamruimte App\Http\Controllers;
gebruik Illuminate\Http\Request;
/* Voeg de benodigde pakketten toe */
gebruik App\Vacatures\SendingEmail;
gebruik koolstof\koolstof;
klasse SendEmailController breidt Controller uit

/**
* Laravel-wachtrijen gebruiken
*/
openbare functie handleQueue()

/* Maak een nieuw wachtrij-object met 5 seconden vertraging */
$emailJob = (nieuwe SendingEmail())->delay(Carbon::now()->addSeconds(5));
/* Duw de nieuwe taak in de taakwachtrij */
verzending ($emailJob);
/* Bericht afdrukken na verzenden e-mail */
echo 'E-mail verzonden na vijf seconden';

Voer nogmaals de volgende URL in de browser uit om te controleren of de code werkt:. Hier wordt de e-mail na vijf seconden verzonden, met behulp van de vertraging()-methode van vijf seconden.

http://localhost:8000/emailqueue

Controleer de inbox van het e-mailadres van de ontvanger om te zien of er na 5 seconden een nieuwe e-mail is ontvangen. Er wordt een e-mail met de volgende inhoud ontvangen als de wachtrijtaak correct werkt:.

Conclusie

Deze tutorial toont een heel eenvoudig gebruik van de Laravel-wachtrij. U kunt Laravel-wachtrijen voor verschillende doeleinden gebruiken, op basis van uw toepassingsvereisten. Ik hoop dat deze tutorial lezers heeft geholpen om de basisconcepten van Laravel-wachtrijen beter te begrijpen.

Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...
Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...
Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...