Inhaltsverzeichnis
(1) Warteschlangenimplementierung
(二)任务调度
Heim PHP-Framework Laravel Eine ausführliche Erklärung der Warteschlangen und der Aufgabenplanung in Laravel6

Eine ausführliche Erklärung der Warteschlangen und der Aufgabenplanung in Laravel6

Jul 19, 2021 pm 03:13 PM

(1) Warteschlangenimplementierung

In Laravel müssen wir nur die Warteschlange bedienen, um dies zu erreichen. Vor der Implementierung müssen wir eine einfache Konfiguration durchführen: config/ So ändern Sie queue.php, bitte schauen Sie in der offiziellen Dokumentation nach. Ich werde hier nicht im Detail darauf eingehen. <code>config/queue.php进行修改,具体查看官方文档,这里我不进行详细说明,下面我们直接进入正题。

  1. 首先,通过执行php artisan make:job 任务类名称我们可以实现一个队列任务,执行该命令后,将会在app目录下生成Jobs目录并创建一个新的任务类,该任务类会自动继承IlluminateContractsQueueShouldQueue接口,我们的队列会调用该任务类的handle方法,因此我们只需要在handle里面去实现我们具体的业务逻辑,就可以轻松的实现任务类。而此时,我们这是对我们任务类进行处理,那我们该怎么去分配任务进行处理呢?
    Eine ausführliche Erklärung der Warteschlangen und der Aufgabenplanung in Laravel6

  2. 在laravel中,任务的分发,也只需要通过简单的已实现的方法进行任务分配,我们只需要将任务指定对应的队列进行分发处理,具体的实现方式只需要以下简单的几行代码,便可以实现任务分发。

    //任务指定到对应的队列
    $job = (new TestQueue())->onQueue(&#39;队列名称&#39;);
    //分发任务
    dispatch($job);
    Nach dem Login kopieren
  3. 实现的队列的分发之后,我们通过运行php artisan queue:work队列处理器,该处理器便会对分发到队列里的任务进行处理,它会一直运行直到它被手动停止或终端关闭。需要注意的是,由于队列处理器是作为一个常驻进程并且在内存中保存着已经启动的应用状态,当我们修改对应的代码时,我们需要重启队列处理器才会载入修改后的代码逻辑。所以当我们对相应的任务类进行修改时,我们需要重启以保证正确性。

  4. Supervisor 配置,这里官方文档讲得挺明白的,我就没必要在复述一次官方文档传送门

(二)任务调度

这里我直接引用官方文档的话语,简明易懂。

过去,你可能需要在服务器上为每一个调度任务去创建 Cron 入口。但是这种方式很快会变得不友好,因为这些任务调度不在源代码中,并且你每次都需要通过 SSH 链接登录到服务器中才能增加 Cron 入口。
Laravel 命令行调度器允许你在 Laravel 中对命令调度进行清晰流畅的定义。且使用这个任务调度器时,你只需要在你的服务器上创建单个 Cron 入口。你的任务调度在 app/Console/Kernel.php 的 schedule 方法中进行定义。

  1. 任务调度定义。在laravel官方文档中,我们更常用的是任务Artisan命令调度和队列调度。

    //artisan命令调度
    $schedule->command(&#39;emails:send Taylor --force&#39;)->daily();
    //队列调度
    $schedule->job(new Heartbeat)->everyFiveMinutes();
    // 分发任务到「heartbeats」队列...
    $schedule->job(new Heartbeat, &#39;heartbeats&#39;)->everyFiveMinutes();
    Nach dem Login kopieren
  2. 任务调用频率,如上步骤的daily()everyFiveMinutes()

    1. Zuerst können wir durch Ausführen von php artisan make:job task class name eine Warteschlangenaufgabe implementieren. Nach der Ausführung dieses Befehls wird das Jobs-Verzeichnis in der App generiert und erstellt Verzeichnis Eine neue Task-Klasse, die automatisch die Schnittstelle IlluminateContractsQueueShouldQueue> erbt. Unsere Warteschlange ruft die Handle-Methode der Task-Klasse auf, sodass wir nur unsere spezifische Geschäftslogik in den Handle-Task-Klassen implementieren können einfach umgesetzt werden. Zu diesem Zeitpunkt verarbeiten wir unsere Aufgabenklasse. Wie sollten wir also Aufgaben für die Verarbeitung zuweisen? <br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/020/9fe3bdf2dc1b025b963d722e3917fd6e-0.png" class="lazy" alt="Bildbeschreibung hier einfügen">🎜
    2. 🎜In Laravel muss die Aufgabenverteilung nur über einfache implementierte Methoden erfolgen. Wir müssen nur die entsprechende Warteschlange für die zu verteilende Aufgabe angeben. Die spezifische Implementierungsmethode erfordert nur die folgenden einfachen Schritte: Mit nur einer Zeile Code, Aufgabenverteilung kann erreicht werden. 🎜rrreee
    3. 🎜Nachdem die Warteschlange verteilt wurde, führen wir den Warteschlangenprozessor php artisan queue:work aus, der die an die Warteschlange verteilten Aufgaben verarbeitet manuell gestoppt oder das Terminal geschlossen wird. Es ist zu beachten, dass wir den Warteschlangenprozessor neu starten müssen, um die geänderte Codelogik zu laden, da der Warteschlangenprozessor ein residenter Prozess ist und den Status der gestarteten Anwendung im Speicher speichert. Wenn wir also die entsprechende Aufgabenklasse ändern, müssen wir neu starten, um die Richtigkeit sicherzustellen. 🎜
    4. 🎜Supervisor-Konfiguration, das offizielle Dokument hier erklärt es sehr klar, es besteht für mich keine Notwendigkeit, das offizielle Dokumentenportal zu wiederholen🎜
    🎜(2) Aufgabenplanung🎜🎜 Hier zitiere ich direkt aus der offiziellen Dokumentation, die prägnant und leicht verständlich ist. 🎜
    🎜In der Vergangenheit mussten Sie möglicherweise für jede geplante Aufgabe auf dem Server einen Cron-Eintrag erstellen. Dieser Ansatz wird jedoch schnell unfreundlich, da diese Aufgabenplaner nicht im Quellcode enthalten sind und Sie sich jedes Mal über einen SSH-Link beim Server anmelden müssen, um einen Cron-Eintrag hinzuzufügen.
    Mit dem Laravel-Befehlszeilenplaner können Sie die Befehlsplanung in Laravel klar und reibungslos definieren. Und wenn Sie diesen Taskplaner verwenden, müssen Sie nur einen einzigen Cron-Eintrag auf Ihrem Server erstellen. Ihr Aufgabenplan wird in der Zeitplanmethode von app/Console/Kernel.php definiert. 🎜
    1. 🎜Aufgabenplanungsdefinition. In der offiziellen Laravel-Dokumentation verwenden wir häufiger die Task-Artisan-Befehlsplanung und die Warteschlangenplanung. 🎜rrreee
    2. 🎜Aufgabenaufrufhäufigkeit, wie z. B. daily(), everyFiveMinutes() usw. in den obigen Schritten, begrenzen alle die Aufrufhäufigkeit Es ist im wahrsten Sinne des Wortes nicht schwer zu verstehen, dass es einmal pro Minute oder jeden Tag aufgerufen werden soll. Der konkrete Aufruf lautet wie folgt (um die Länge zusammenzufassen). Weitere Informationen finden Sie auch in der offiziellen Dokumentation. 🎜
    ->everyFiveMinutes();Alle fünf Minuten eine Aufgabe ausführenAlle zehn Minuten eine Aufgabe ausführenFühren Sie alle fünfzehn Minuten eine Aufgabe ausFühren Sie alle dreißig Minuten eine Aufgabe ausFühren Sie jede Stunde eine Aufgabe aus Eine Aufgabe wird zur 17. Minute jeder Stunde ausgeführtEine Aufgabe wird jeden Tag um Mitternacht ausgeführt (Anmerkung des Übersetzers: Jeden Tag um Mitternacht). 1:00 und 13:00 jeden Tag Führen Sie die Aufgabe einmal pro Woche ausFühren Sie die aus Aufgabe einmal jeden Montag um 8 UhrFühren Sie die Aufgabe einmal im Monat ausFühren Sie die aus Aufgabe einmal im Monat um 15:00 Uhr am 4.Führen Sie vierteljährlich eine Aufgabe ausFühren Sie jedes Jahr eine Aufgabe ausStellen Sie die Zeitzone einZuletzt starten Sie natürlich den Scheduler und führen ihn aus . Tatsächlich gibt es nicht viel zu besprechen, aber diese beiden sind normalerweise für unsere Projekte von entscheidender Bedeutung. Die offiziellen Dokumente sind zu umständlich und unnötig, daher werde ich kurz auf die häufig verwendeten Dokumente eingehen. Mit der Methode hat Laravel diese allgemeinen Vorgänge gekapselt und so viele Probleme reduziert. Wenn Sie daran interessiert sind, die Implementierungslogik zu verstehen, sollten Sie zumindest wissen, wie man sie verwendet. Verwandte Empfehlungen:
    Methoden 描 beschreibe-& gt; Jede Minute eine Aufgabe
    ->everyTenMinutes();
    -> ;everyFifteenMinutes ();
    ->everyThirtyMinutes();
    ->stündlich();
    ->hourlyAt(17);
    ->daily();
    ->weekly();
    ->weeklyOn(1, '8:00');
    ->monatlich();
    ->monatlichOn(4, '15:00');
    -> ;vierteljährlich();
    ->jährlich();
    ->timezone('America/New_York');
    (3) Zusammenfassung
    Die neuesten fünf Laravel-Video-Tutorials

Das obige ist der detaillierte Inhalt vonEine ausführliche Erklärung der Warteschlangen und der Aufgabenplanung in Laravel6. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 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.

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

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

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