Maison > cadre php > Laravel > Analyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file d'attente

Analyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file d'attente

藏色散人
Libérer: 2021-06-25 10:03:24
avant
2389 Les gens l'ont consulté

La colonne tutorielle suivante de laravel vous présentera la surveillance des événements, la planification des tâches et la file d'attente de Laravel5.5. J'espère qu'elle sera utile aux amis dans le besoin !

Surveillance des événements Laravel5.5, planification des tâches, file d'attente

1. Surveillance des événements

Processus :

Analyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file dattente

1.1 Créer un événement

php artisan make:event UserLogin
Copier après la connexion

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));
    }
Copier après la connexion

1.2 Créer un écouteur

1.2.1 Méthode 1 : Manuellement create

php artisan make:listener EmailAdminUserLogin --event=UserLogin
Copier après la connexion

1.2.2 Méthode 2 : Recommander la méthode suivante : Générer automatiquement les événements et les auditeurs

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

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) {
            //
        });
    }
}
Copier après la connexion

Générer les événements et les auditeurs : php artisan event:generate

2. Fonction de planification des tâches (tâche planifiée) de Laravel Planification des tâches

Méthode d'appel 2.1

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function (){
            \Log::info('我是call方法实现的定时任务');
        })->everyMinute();
    }
Copier après la connexion

Exécution : php artisan schedule:run

Mode crontab 2.2

Analyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file dattente

Mode commande 2.2

Générer la commande : 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;);
    }
}
Copier après la connexion

Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('message:hi')
             ->everyMinute();
}
Copier après la connexion

Exécution : php artisan schedule:run

3.1 Paramètres du pilote nécessaires

 

QUEUE_DRIVER=database

Par exemple : pilote de base de données

php artisan queue:table

php artisan migrate
Copier après la connexion
3.2 Créer une tâche

 

Générer une classe de tâches :

php artisan make:job SendReminderEmail
Copier après la connexion
rrree3.3 Distribution des tâches

Après avoir écrit la classe de tâches, vous pouvez la distribuer via la fonction auxiliaire

. Le seul paramètre qui doit être transmis à

est une instance de cette classe de tâches : dispatchdispatchUtilisez la fabrique de modèles pour générer 30 utilisateurs :

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);
    }
}
Copier après la connexion
rrreeAnalyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file dattenteLa table de base de données

génère 5 tâches de file d'attente : jobs

Analyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file dattente3.4 Exécuter le processeur de file d'attente

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

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

        return 'Done';
    }
Copier après la connexion

Conseils :

Sachez qu'une fois la commande lancée, elle s'exécutera jusqu'à ce que vous l'arrêtiez manuellement ou que vous fermiez la console queue:work

Gérer une seule tâche :

Vous pouvez le spécifier en utilisant l'option Ne traiter qu'une seule tâche dans la file d'attente

Route::get('/job', 'UserController@store');
Copier après la connexion
--once

Analyse de la surveillance des événements Laravel5.5, de la planification des tâches et de la file dattente

Extension :

utilise pour gérer la file d'attente, et est utilisé pour surveiller les tâches de la file d'attente et nous aide automatiquement à les exécuter lorsqu'il y a des tâches dans la file d'attente, éliminant ainsi le besoin de taper manuellement la commande Beanstalkd pour garantir que notre file d'attente peut être exécutée correctement Supervisorphp artisan《 Recommandations associées :

Les cinq derniers didacticiels vidéo Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal