Vereisten
Voer eerst de volgende taken uit voordat u aan deze zelfstudie begint:
- Installeer een nieuw Laravel-project
- De databaseverbinding instellen
- 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:tabelU 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 migrerenMailklasse 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 SendEmailDe 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-mailDe 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 SendEmailControllerSendEmailController.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.