Inhaltsverzeichnis
1. Ereignisüberwachung
1.1 Ereignis erstellen
1.2 Listener erstellen
1.2 .1 Methode 1: Manuell erstellen
1.2.2 Methode 2: Empfehlen Sie die folgende Methode: Ereignisse und Listener automatisch generieren
二、Laravel 的任务调度(计划任务)功能 Task Scheduling
2.1 call方式
2.2 crontab方式
2.2 command方式
三、队列任务
3.1 驱动的必要设置
3.2 创建任务
3.3 分发任务
3.4 运行队列处理器
Heim PHP-Framework Laravel Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

Jun 19, 2021 pm 04:03 PM
laravel 事件监听

Die folgende Tutorial-Kolumne von laravel stellt Ihnen die Ereignisüberwachung, Aufgabenplanung und Warteschlange von Laravel5.5 vor. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

Laravel5.5 Ereignisüberwachung, Aufgabenplanung, Warteschlange

1. Ereignisüberwachung

Prozess:

Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

1.1 Ereignis erstellen

php artisan make:event UserLogin
Nach dem Login kopieren

LoginController.php

    /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        event(new UserLogin($user));
    }
Nach dem Login kopieren

1.2 Listener erstellen

1.2 .1 Methode 1: Manuell erstellen

php artisan make:listener EmailAdminUserLogin --event=UserLogin
Nach dem Login kopieren

1.2.2 Methode 2: Empfehlen Sie die folgende Methode: Ereignisse und Listener automatisch generieren

//应用程序的事件监听器映射

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'App\Events\UserLogin' => [
            'App\Listeners\UserLogin\EmailAdminUserLogin',
            'App\Listeners\UserLogin\TraceUser',
            'App\Listeners\UserLogin\AddUserLoginCounter',
        ],
        'App\Events\UserLogout' => [
            'App\Listeners\UserLogout\EmailAdminUserLogout',
            'App\Listeners\UserLogout\TraceUser',
        ],
    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

        Event::listen('event.*', function ($eventName, array $data) {
            //
        });
    }
}
Nach dem Login kopieren

Ereignisse und Listener generieren: php artisan event:generate php artisan event:generate

二、Laravel 的任务调度(计划任务)功能 Task Scheduling

2.1 call方式

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function (){
            \Log::info('我是call方法实现的定时任务');
        })->everyMinute();
    }
Nach dem Login kopieren

执行:php artisan schedule:run

2.2 crontab方式

Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

2.2 command方式

生成命令:php artisan make:command SayHello

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;

class SayHello extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = &#39;message:hi&#39;;

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = &#39;Command description&#39;;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //书写处理逻辑
        \Log::info(&#39;早上好,用户&#39;);
    }
}
Nach dem Login kopieren

Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('message:hi')
             ->everyMinute();
}
Nach dem Login kopieren

执行:php artisan schedule:run

三、队列任务

3.1 驱动的必要设置

    QUEUE_DRIVER=database

如:数据库驱动

php artisan queue:table

php artisan migrate
Nach dem Login kopieren

3.2 创建任务

     生成任务类:

php artisan make:job SendReminderEmail
Nach dem Login kopieren
class SendReminderEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $user;

    /**
     * Create a new job instance.
     *
     * @param User $user
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        \Log::info('send reminder email to user' . $this->user->email);
    }
}
Nach dem Login kopieren

3.3 分发任务

    你写好任务类后,就能通过 dispatch 辅助函数来分发它了。唯一需要传递给 dispatch 的参数是这个任务类的实例:
利用模型工厂生成30个用户:

Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

    public function store(Request $request)
    {
        $users = User::where('id','>',24)->get();

        foreach ($users as $user){
            $this->dispatch(new SendReminderEmail($user));
        }

        return 'Done';
    }
Nach dem Login kopieren
Route::get('/job', 'UserController@store');
Nach dem Login kopieren

数据库表jobs生成5个队列任务:

Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

3.4 运行队列处理器

php artisan queue:work
Nach dem Login kopieren

Tips:要注意,一旦 queue:work 命令开始,它将一直运行,直到你手动停止或者你关闭控制台

处理单一任务:你可以使用 --once 选项来指定仅对队列中的单一任务进行处理

php artisan queue:work --once
Nach dem Login kopieren

Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange

拓展:使用 Beanstalkd 管理队列,Supervisor 则是用来监听队列的任务,并在队列存在任务的情况下自动帮我们去执行,免去手动敲 php artisan

2. Aufgabenplanungsfunktion (geplante Aufgabe) von Laravel. https://img.php.cn/upload/image/422/791/800/1624089627485691.png" title="1624089627485691.png" alt="Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange"/>

2.2 Befehlsmethode

Befehl generieren : 🎜php artisan make:command SayHello🎜rrreee🎜🎜Kernel.php🎜🎜rrreee🎜🎜Ausführung: 🎜php artisan scheme:run🎜🎜3. Aufgaben in die Warteschlange stellen 🎜🎜 3.1 Notwendige Einstellungen für den Treiber 🎜🎜                                                                                                       3 Verteilen Sie Aufgaben🎜🎜 an Sie. Nachdem Sie die Aufgabenklasse geschrieben haben, können Sie sie über die Hilfsfunktion dispatch verteilen. Der einzige Parameter, der an dispatch übergeben werden muss, ist eine Instanz dieser Aufgabenklasse:
🎜Verwenden Sie die Modellfabrik, um 30 Benutzer zu generieren: 🎜🎜🎜Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange🎜rrreeerrreee🎜 🎜DatenbanktabelleJobs Code>generiert 5 Warteschlangen Aufgabe: 🎜🎜🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/image/471/635/251/1624089668506150.png" class="lazy" title="1624089668506150.png" alt="c7d38a7878f8e39890022 65ee886da0 .png"> 🎜🎜3.4 Ausführen des Warteschlangenprozessors 🎜rrreee🎜🎜Tipps: 🎜Beachten Sie, dass der Befehl <code>queue:work nach dem Start so lange ausgeführt wird, bis Sie ihn manuell stoppen oder die Konsole schließen 🎜🎜🎜Verarbeiten einer einzelnen Aufgabe: 🎜Mit der Option --once können Sie festlegen, dass nur eine einzelne Aufgabe in der Warteschlange verarbeitet werden soll🎜rrreee🎜Analyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange🎜🎜🎜Erweiterung: 🎜Verwenden Sie Beanstalkd Verwaltungswarteschlange, Supervisor code> wird verwendet, um die Aufgaben in der Warteschlange zu überwachen und uns automatisch bei der Ausführung zu helfen, wenn sich Aufgaben in der Warteschlange befinden, wodurch die manuelle Eingabe des <code>php artisan entfällt Befehl, um sicherzustellen, dass unsere Warteschlange korrekt ausgeführt werden kann🎜🎜 „Verwandte Empfehlungen: 🎜Die neuesten fünf Laravel-Video-Tutorials🎜“🎜🎜

Das obige ist der detaillierte Inhalt vonAnalyse der Laravel5.5-Ereignisüberwachung, Aufgabenplanung und Warteschlange. 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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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 bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Apr 01, 2025 pm 02:45 PM

Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

Laravel -Zeitplanaufgabe wird nicht ausgeführt: Was soll ich tun, wenn die Aufgabe nicht nach Zeitplan ausgeführt wird: Befehl ausführen? Laravel -Zeitplanaufgabe wird nicht ausgeführt: Was soll ich tun, wenn die Aufgabe nicht nach Zeitplan ausgeführt wird: Befehl ausführen? Mar 31, 2025 pm 11:24 PM

Laravel -Zeitplan -Aufgabe Ausführen nicht reagierende Fehlerbehebung Bei Verwendung der Zeitplanung von Laravel -Zeitplänen werden viele Entwickler auf dieses Problem stoßen: Zeitplan: Run ...

Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Mar 31, 2025 pm 11:48 PM

Die Methode zum Umgang mit Laravels E -Mail -Versagen zum Senden von Verifizierungscode besteht darin, Laravel zu verwenden ...

So implementieren Sie die benutzerdefinierte Tabellenfunktion des Klickens, um Daten im DCAT -Administrator hinzuzufügen? So implementieren Sie die benutzerdefinierte Tabellenfunktion des Klickens, um Daten im DCAT -Administrator hinzuzufügen? Apr 01, 2025 am 07:09 AM

So implementieren Sie die Tabellenfunktion von benutzerdefiniertem Klicken, um Daten in dcatadmin (laravel-admin) hinzuzufügen, wenn Sie DCAT verwenden ...

Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Apr 01, 2025 am 07:45 AM

Die Auswirkungen des Austauschs von Redis -Verbindungen im Laravel -Framework und der Auswahl von Methoden bei Verwendung von Laravel -Framework und Redis können Entwickler auf ein Problem stoßen: Durch Konfiguration ...

Laravel Multi-Tenant-Erweiterungsstanz/Mietverhältnis: Wie passen Sie die Host-Adresse einer Mieterdatenbankverbindung an? Laravel Multi-Tenant-Erweiterungsstanz/Mietverhältnis: Wie passen Sie die Host-Adresse einer Mieterdatenbankverbindung an? Apr 01, 2025 am 09:09 AM

Benutzerdefinierte Mieterdatenbankverbindung in Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis beim Erstellen von Multi-Mandanten-Anwendungen mit Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis, ...

Laravel eloquent orm bei bangla partieller Modellsuche) Laravel eloquent orm bei bangla partieller Modellsuche) Apr 08, 2025 pm 02:06 PM

Laraveleloquent-Modellab Abruf: Das Erhalten von Datenbankdaten Eloquentorm bietet eine prägnante und leicht verständliche Möglichkeit, die Datenbank zu bedienen. In diesem Artikel werden verschiedene eloquente Modellsuchtechniken im Detail eingeführt, um Daten aus der Datenbank effizient zu erhalten. 1. Holen Sie sich alle Aufzeichnungen. Verwenden Sie die Methode All (), um alle Datensätze in der Datenbanktabelle zu erhalten: UseApp \ Models \ post; $ posts = post :: all (); Dies wird eine Sammlung zurückgeben. Sie können mit der Foreach-Schleife oder anderen Sammelmethoden auf Daten zugreifen: foreach ($ postas $ post) {echo $ post->

Laravel -Datenbank Migration begegnet doppelte Klassendefinition: Wie beheben Sie die doppelte Erzeugung von Migrationsdateien und Klassennamenkonflikten? Laravel -Datenbank Migration begegnet doppelte Klassendefinition: Wie beheben Sie die doppelte Erzeugung von Migrationsdateien und Klassennamenkonflikten? Apr 01, 2025 pm 12:21 PM

Ein Problem der doppelten Klassendefinition während der Laravel -Datenbankmigration tritt auf. Bei Verwendung des Laravel -Frameworks für die Datenbankmigration können Entwickler "Klassen" verwendet ...

See all articles