Heim PHP-Framework Laravel So führen Sie die Laravel-Warteschlange ständig aus

So führen Sie die Laravel-Warteschlange ständig aus

May 21, 2023 am 09:45 AM

Bei der Entwicklung mit Laravel sind Warteschlangen oft ein wesentlicher Bestandteil. Es kann die Fähigkeiten zur gleichzeitigen Verarbeitung von Anwendungen erheblich verbessern und ermöglicht die effektive Verwaltung und Verarbeitung einer großen Anzahl von Aufgaben. In der tatsächlichen Entwicklung stoßen wir jedoch häufig auf ein solches Problem: Die Warteschlange ist instabil, die Warteschlange stoppt plötzlich, wenn viele Aufgaben vorhanden sind, oder die Warteschlange kann nicht automatisch neu gestartet werden, wenn eine Ausnahme in der Aufgabe auftritt. Zu diesem Zeitpunkt benötigen wir einige Fähigkeiten, um einen stabilen Betrieb der Warteschlange zu ermöglichen. Hier sind mehrere Methoden, die Ihnen bei der Lösung dieser Probleme helfen können.

1. Supervisor-Daemon

Supervisor ist ein in Python geschriebenes Prozesskontrollsystem. Es kann uns helfen, einen Prozess im Hintergrund kontinuierlich zu überwachen Wenn es aus irgendeinem Grund beendet wird, kann es mit dem Host-Prozess neu gestartet werden. Dadurch wird sichergestellt, dass Ihre Warteschlange immer ausgeführt werden kann.

Supervisor installieren

Centos-Systemausführung

yum install -y supervisor

Ubuntu-Systemausführung

apt-get install -y supervisor

Öffnen Sie die Konfigurationsdatei

vim /etc/supervisord.conf

Treten Sie unserem Laravel bei -queue-Konfigurationsabschnitt

[program:laravel-queue]
command=php /path/to/artisan queue:work redis --sleep=3 --tries=3
directory=/path/to/your/project
autostart =true
autorestart=true
user=www-data

Anweisungen:

  • Programm: Definieren Sie den Namen des Prozesses
  • Befehl: Definieren Sie den laufenden Befehl
  • Autostart: Automatisch nach dem Booten starten
  • Autorestart: Automatisch neu starten
  • user: run Der Benutzer des Prozesses

speichert die Änderung und lädt die Konfiguration

supervisorctl reload

Starte die Warteschlange

supervisorctl start laravel-queue

Auf diese Weise kann der Daemon-Prozess für die Warteschlange implementiert werden . Wenn die Warteschlange gestoppt wird, wird der Prozess automatisch neu gestartet, um sicherzustellen, dass die Warteschlange immer ausgeführt wird. Selbstverständlich können Sie über die Konfiguration in der Konfigurationsdatei auch mehrere Arbeitsprozesse ausführen, um die Warteschlangenverarbeitungsfähigkeiten zu verbessern.

2. Verwenden Sie Nomad von Hashicorp, um Marathon zu integrieren. Nomad von Hashicorp funktioniert ähnlich wie Marathon. Beide sind Open-Source-Tools für die Orchestrierung verteilter Aufgaben. Nomad ist in der Lage, eine Reihe verschiedener Arten von Aufgaben zu orchestrieren, indem es deren Standort und Entscheidungen abstrahiert. Im Vergleich zu Marathon bietet Nomad die Vorteile von geringem Gewicht, hoher Benutzererfahrung und einfacher Konfiguration.

Für die Verwendung von Nomad ist eine Docker-Umgebung erforderlich. Wenn Sie Docker nicht installiert haben, können Sie es zuerst über apt-get installieren:

apt-get install -y docker.io

Nomad-Job erstellen
  1. Einen Job erstellen Erstellen Sie im Stammverzeichnis des Projekts einen Nomad-Job über die Konfiguration:

job „laravel_app“ {

datacenters = [“dc1“]

type = „service“

group „app“ {

task "laravel-queue" {
  driver = "docker"

  config {
    image = "your_docker_image"
    command = ["php", "artisan", "queue:work", "--tries", "1", "--timeout", "30"]
    args = [
      "--queue=critical,high,default,email,chat,sms",
      "--sleep=3"
    ]
    ports = ["http"]
  }

  resources {
    cpu    = 500
    memory = 128
    network {
      mbits = 10
      port "http" {}
    }
  }

  service {
    name = "laravel-queue"
    port = "http"
    check {
      type     = "http"
      path     = "/status"
      interval = "10s"
      timeout  = "2s"
    }
  }

  restart {
    attempts = 10
    interval = "5m"
    delay    = "25s"
    mode     = "failures"
  }
}
Nach dem Login kopieren

}

}


Die obige Konfigurationsdatei von Docker wird für die Ausführung im Standalone-Modus verwendet und entsprechend den tatsächlichen Bedingungen in der Produktionsumgebung geändert.

Nomad Job starten
  1. Führen Sie den folgenden Befehl aus, um Nomad Job zu starten:

nomad run job.nomad

Damit ist der Start der Warteschlange abgeschlossen. Nomad führt unseren Job auf einem Knoten aus und kann den Job gleichzeitig überwachen. Wenn ein Problem mit der Aufgabe auftritt, kann Nomad die Aufgabe schnell neu starten und den Status aktualisieren. Nomad Job kann automatisch zwischen verschiedenen Knoten im Cluster migrieren, wodurch die Belastung eines bestimmten Knotens verringert und die Robustheit der gesamten Anwendung verbessert werden kann.

3. Verwendung von AWS SQS

Der SQS (Simple Queue Service) von AWS kann Nachrichten zwischen verteilten Anwendungen effizient übermitteln und verarbeiten und ermöglicht eine horizontale Skalierung der Nachrichtenverarbeitung. Im Laravel-Framework kann SQS problemlos in unsere Anwendungen integriert werden. Wir müssen lediglich das Laravel Queue-Paket installieren, das SQS unterstützt. Gleichzeitig hat jede Warteschlange in AWS SQS einen Mindestlebenszyklus (TTL). Wenn sie innerhalb dieses Zeitraums nicht erfolgreich ausgeführt wird, wird die Aufgabe von SQS gelöscht. Dadurch wird sichergestellt, dass eine Aufgabe letztendlich erfolgreich ausgeführt wird.

SQS installieren

Die Integration von SQS in Laravel ist relativ einfach. Sie müssen lediglich das Laravel Queue-Paket installieren, das SQS unterstützt. Kann direkt über Composer installiert werden:

Composer erfordert „aws/aws-sdk-php ^3.0“

Konfigurieren Sie SQS

Fügen Sie den folgenden Inhalt in der .env-Konfigurationsdatei hinzu:

QUEUE_DRIVER=sqs

AWS_ACCESS_KEY_ID=your_aws_access_key

AWS_ SECR ET_ACCESS_KEY=your_aws_secret_key
AWS_DEFAULT_REGION=us-west-2
SQS_PREFIX=your_queue_prefix

Ersetzen Sie your_aws_access_key, your_aws_secret_key und your_queue_prefix durch Ihre eigenen.

Starten Sie die Warteschlange

php artisan queue:work sqs --queue=default --tries=3 --sleep=3 --timeout=60

Der obige Befehl startet eine SQS-Warteschlange und verwendet die Standardwarteschlange. Dabei gibt der Parameter --tries die Anzahl der Fehlerversuche für die Warteschlangenaufgabe an, --sleep gibt die Zeit an, die die Warteschlange nach der Verarbeitung der Aufgabe ruhen soll, und --timeout gibt die automatische Wiederholungszeit an, wenn die Warteschlangenaufgabe das Zeitlimit überschreitet. Die Warteschlange wird kontinuierlich durchlaufen, um Aufgaben abzurufen und auszuführen:

Wenn ein Fehler auftritt, wird die Warteschlange automatisch erneut versuchen, bis die Anzahl der Fehlerversuche der Warteschlangenaufgabe erschöpft ist oder die Ausführung erfolgreich ist.

Zusammenfassung

In diesem Artikel stellen wir verschiedene Methoden vor, um die Ausführung der Laravel-Warteschlange aufrechtzuerhalten. Durch Daemon-Prozesse, Aufgabenorchestrierung, Dienste von Drittanbietern usw. können wir eine stabilere und effizientere Betriebsunterstützung für die Warteschlange bereitstellen. Jede Methode hat ihre eigenen Vorteile und Anwendungsbereiche. Welche Methode Sie wählen, hängt von Ihrer tatsächlichen Situation ab.

Das obige ist der detaillierte Inhalt vonSo führen Sie die Laravel-Warteschlange ständig aus. 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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie baue ich eine erholsame API mit fortgeschrittenen Funktionen in Laravel? Wie baue ich eine erholsame API mit fortgeschrittenen Funktionen in Laravel? Mar 11, 2025 pm 04:13 PM

Dieser Artikel führt dazu, dass robuste Laravel -Rastful -APIs aufgebaut werden. Es deckt Projekt -Setup, Ressourcenverwaltung, Datenbankinteraktionen, Serialisierung, Authentifizierung, Autorisierung, Testen und Best Practices für die wichtige Sicherheitssicherheit ab. Skalierbarkeit Chall

Wie implementieren Sie OAuth2 -Authentifizierung und -autorisierung in Laravel? Wie implementieren Sie OAuth2 -Authentifizierung und -autorisierung in Laravel? Mar 12, 2025 pm 05:56 PM

In diesem Artikel werden die Authentifizierung und Autorisierung von OAuth 2.0 in Laravel implementiert. Es umfasst die Verwendung von Paketen wie League/OATH2-Server oder providerspezifischer Lösungen, wobei die Datenbank-Setup, die Client-Registrierung und die Autorisierungsserverkonfigurus betont werden

Wie verwende ich die Komponenten von Laravel, um wiederverwendbare UI -Elemente zu erstellen? Wie verwende ich die Komponenten von Laravel, um wiederverwendbare UI -Elemente zu erstellen? Mar 17, 2025 pm 02:47 PM

In dem Artikel wird das Erstellen und Anpassen wiederverwendbarer UI -Elemente in Laravel mithilfe von Komponenten ermittelt, die Best Practices für die Organisation anbieten und Vorschläge für Verbesserungspakete vorschlagen.

Was sind die besten Praktiken für die Verwendung von Laravel in einer Cloud-nativen Umgebung? Was sind die besten Praktiken für die Verwendung von Laravel in einer Cloud-nativen Umgebung? Mar 14, 2025 pm 01:44 PM

In dem Artikel werden Best Practices für die Bereitstellung von Laravel in Cloud-nativen Umgebungen erörtert und sich auf Skalierbarkeit, Zuverlässigkeit und Sicherheit konzentriert. Zu den wichtigsten Problemen gehören Containerisierung, Microservices, staatenlose Design- und Optimierungsstrategien.

Wie kann ich in Laravel benutzerdefinierte Validierungsregeln erstellen und verwenden? Wie kann ich in Laravel benutzerdefinierte Validierungsregeln erstellen und verwenden? Mar 17, 2025 pm 02:38 PM

In dem Artikel wird das Erstellen und Verwenden von benutzerdefinierten Validierungsregeln in Laravel erläutert und bietet Schritte zur Definition und Implementierung. Es zeigt Vorteile wie Wiederverwendbarkeit und Spezifität und bietet Methoden zur Erweiterung des Laravel -Validierungssystems.

Laravel vs. Symfony: Welches ist für Ihre Web -App geeignet? Laravel vs. Symfony: Welches ist für Ihre Web -App geeignet? Mar 10, 2025 pm 01:34 PM

Bei der Auswahl eines PHP -Frameworks gehören Laravel und Symfony zu den beliebtesten und am häufigsten verwendeten Optionen. Jedes Rahmen bringt seine eigene Philosophie, Merkmale und Stärken auf den Tisch, wodurch sie für verschiedene Projekte und Anwendungsfälle geeignet sind

Wie erstelle und verwende ich benutzerdefinierte Blade -Direktiven in Laravel? Wie erstelle und verwende ich benutzerdefinierte Blade -Direktiven in Laravel? Mar 17, 2025 pm 02:50 PM

In dem Artikel wird das Erstellen und Verwenden benutzerdefinierter Blade -Richtlinien in Laravel erläutert, um die Vorlagen zu verbessern. Es umfasst die Definition von Direktiven, die Verwendung in Vorlagen und die Verwaltung in großen Projekten, um Vorteile wie eine verbesserte Wiederverwendbarkeit von Code und R hervorzuheben

Was sind die besten Möglichkeiten, um Dateien -Uploads und Cloud -Speicher in Laravel zu verarbeiten? Was sind die besten Möglichkeiten, um Dateien -Uploads und Cloud -Speicher in Laravel zu verarbeiten? Mar 12, 2025 pm 05:54 PM

In diesem Artikel wird in Laravel optimale Dateien -Upload- und Cloud -Speicherstrategien in Laravel untersucht. Es untersucht lokale Speicher- und Cloud -Anbieter (AWS S3, Google Cloud, Azure, Digitalocean), die Sicherheit (Validierung, Bereinigung, HTTPS) und Leistungsopti betonen

See all articles