Heim > Backend-Entwicklung > PHP-Tutorial > Aufgaben in Laravel mit Warteschlangen verschieben

Aufgaben in Laravel mit Warteschlangen verschieben

William Shakespeare
Freigeben: 2025-03-07 01:16:10
Original
547 Leute haben es durchsucht

Deferring Tasks in Laravel Using Queues

In diesem Artikel wird die Warteschlangen -API von Laravel untersucht, ein leistungsstarkes Tool zur Aufhebung rechenintensiver Aufgaben zur Verbesserung der Benutzererfahrung und der Website -Leistung. Wir werden Schlüsselkonzepte behandeln und sie mit einem praktischen Beispiel veranschaulichen.

Die Geschwindigkeit der Website wirkt sich erheblich auf die Zufriedenheit der SEO und der Benutzer aus. Langsame Seitenladezeiten stammen häufig aus ressourcenlastigen Codeblöcken. Die Lösung? Verschiebung nicht kritischer Aufgaben, um die Gesamtgeschwindigkeit zu verbessern. Die Warteschlange -API von Laravel bietet eine optimierte Möglichkeit, dies zu erreichen.

Die Warteschlange -API von Laravel verwaltet Jobs, die einer Warteschlange hinzugefügt wurden. Diese Warteschlangen sind Verbindungen zugeordnet, die wiederum bestimmte Warteschlangentreiber verwenden. Lassen Sie uns die Komponenten aufschlüsseln:

Warteschlangentreiber

Ähnlich wie bei Datenbankverbindungen unterstützt die Warteschlangen -API verschiedene Treiber, einschließlich Datenbank, BeaneStalkd, SQS und Redis. Der Treiber stellt fest, wo die Warteschlangeninformationen gespeichert werden (z. B. eine Datenbank oder ein Redis -Server). Zwei spezielle Treiber,

, sind nützlich zum Testen; null überspringt die Arbeitsplatzausführung. null

Verbindungen

Warteschlangenkonfiguration erfordert die Angabe einer Standardverbindung. Diese Verbindung definiert:

    Der Warteschlangentreiber zu verwenden.
  • treiberspezifische Konfigurationseinstellungen.
  • Der Standard -Warteschlangenname für neue Jobs.
Warteschlangen

Jobs werden zur Standardwarteschlange hinzugefügt, sofern nicht anders angegeben.

Erstellen wir nun ein Beispiel in der realen Welt: Generierung von Bildminimen.

Erstellen Sie Ihren ersten Warteschlangenjob

Das Generieren mehrerer Bildmedumbnagungen in Echtzeit kann die Benutzererfahrung negativ beeinflussen, insbesondere mit großen Bildern oder vielen Miniaturgrößen. Anstelle einer Echtzeitverarbeitung verschieben wir diese Aufgabe in eine Warteschlange. Dieser Ansatz bietet eine überlegene Benutzererfahrung, wenn die Hauptseite schnell geladen wird und die Miniaturansichterzeugung asynchron erfolgt.

Erstellen des Bildmodells

Erstens erstellen wir ein

Modell zum Verwalten hochgeladener Bilder: Image

php artisan make:model Image --migration
Nach dem Login kopieren
Nach dem Login kopieren
Dies generiert das Modell

und eine Migrationsdatei. Ändern Sie die Migration (Image Datenbank/Migrationen/YYYY_MM_DD_HHMMSS_CREATE_IMAGE_TABLE.PHP ), um den ursprünglichen Bildpfad einzuschließen:

<?php
// database/migrations/YYYY_MM_DD_HHMMSS_create_images_table.php
// ...
$table->string('org_path');
// ...
?>
Nach dem Login kopieren
Nach dem Login kopieren
Führen Sie die Migration aus:

php artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren
Erstellen eines Laravel -Jobs

Wir werden die Interventionsbildbibliothek für die Miniaturansicht verarbeiten. Installieren Sie es über Komponist:

php composer.phar require intervention/image
Nach dem Login kopieren
Erstellen Sie den Job mit dem Artisan -Befehl:

php artisan make:job ProcessImageThumbnails
Nach dem Login kopieren
Ersetzen Sie den Inhalt von

App/Jobs/processImagethumbnails.php mit:

<?php
// app/Jobs/ProcessImageThumbnails.php
// ...
public function handle()
{
    $image = $this->image;
    $full_image_path = public_path($image->org_path);
    $resized_image_path = public_path('thumbs' . DIRECTORY_SEPARATOR . $image->org_path);
    $img = \Image::make($full_image_path)->resize(300, 200);
    $img->save($resized_image_path);
}
// ...
?>
Nach dem Login kopieren
Die

-Methode enthält die Miniaturansichterzeugungslogik. handle

Testen Sie den Job

Erstellen wir ein einfaches Bild -Upload -Formular für Bild. Erstellen Sie einen Controller (

app/http/controller/imageController.php ):

php artisan make:model Image --migration
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie eine Ansicht ( Ressourcen/Ansichten/Upload_Form.blade.php ) und fügen Sie Routen in Routes/web.php :

hinzu
<?php
// database/migrations/YYYY_MM_DD_HHMMSS_create_images_table.php
// ...
$table->string('org_path');
// ...
?>
Nach dem Login kopieren
Nach dem Login kopieren

Die upload -Methode überladet Datei -Uploads, Datenbankeinträge und sendet den Job ProcessImageThumbnails.

Überprüfen Sie nach dem Hochladen den Auftrag des Jobs in der Tabelle jobs mit einer Datenbankabfrage.

der Warteschlangenarbeiter

Die Warteschlangenarbeiterin verarbeitet in die Warteschlange. Starten Sie es mit:

php artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl verarbeitet ausstehende Jobs. Die Ausgabe zeigt den Status der Arbeitsplatzverarbeitung an. Verwenden Sie zur kontinuierlichen Hintergrundverarbeitung einen Prozessmanager wie Supervisor, Zirkus oder ähnliches.

Schlussfolgerung

Die Warteschlange-API von Laravel übernimmt effizient ressourcenintensive Aufgaben und verbessert die Benutzererfahrung. Dieser Artikel lieferte ein grundlegendes Verständnis und ein praktisches Implementierungsbeispiel. Für weiteres Lernen finden Sie Ressourcen auf dem Envato Market.

Das obige ist der detaillierte Inhalt vonAufgaben in Laravel mit Warteschlangen verschieben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage