Maison  >  Article  >  cadre php  >  Comment utiliser un middleware pour la planification de tâches planifiées dans Laravel

Comment utiliser un middleware pour la planification de tâches planifiées dans Laravel

WBOY
WBOYoriginal
2023-11-02 14:26:01550parcourir

Comment utiliser un middleware pour la planification de tâches planifiées dans Laravel

Comment utiliser le middleware pour la planification de tâches planifiées dans Laravel

Introduction :
Laravel est un framework open source PHP populaire qui fournit des outils pratiques et puissants pour développer des applications Web. L'une des fonctionnalités importantes concerne les tâches planifiées, qui permettent aux développeurs d'exécuter des tâches spécifiques à des intervalles spécifiés. Dans cet article, nous présenterons comment utiliser le middleware pour implémenter la planification des tâches planifiées de Laravel et fournirons des exemples de code spécifiques.

  1. Préparation de l'environnement
    Avant de commencer, nous devons nous assurer que l'environnement suivant est prêt :
  2. PHP 7.x ou supérieur
  3. Composer
  4. Laravel est installé avec succès
  5. Créer un planificateur de tâches
    Tout d'abord, nous devons créer une classe Task Scheduler, utilisée pour définir les tâches que nous voulons exécuter à un moment précis. Dans Laravel, vous pouvez utiliser la commande php artisan make:command pour générer un modèle pour la classe du planificateur de tâches. php artisan make:command 命令来生成任务调度器类的模板。

运行以下命令以生成任务调度器类:

php artisan make:command MyTask --command=my:task

这将会在 app/Console/Commands 目录下生成一个名为 MyTask.php 的文件。在该文件中,我们可以定义任务调度器的逻辑。

示例代码:

namespace AppConsoleCommands;

use IlluminateConsoleCommand;

class MyTask extends Command
{
    protected $signature = 'my:task';

    protected $description = 'My custom task';

    public function handle()
    {
        // 这里写入需要执行的任务逻辑
        $this->info('Task executed!');
    }
}

在上述示例中,我们定义了一个名为 MyTask 的任务调度器类,用于执行我们的自定义任务。我们可以在 handle() 方法中编写需要执行的任务逻辑。在这个例子中,我们简单地输出一条信息。

  1. 注册任务调度器
    接下来,我们需要注册任务调度器,使它可以被 Laravel 框架识别和调度。

app/Console/Kernel.php 文件中,我们可以看到定义了一个 schedule() 方法。我们可以在这个方法中注册我们的任务调度器。

示例代码:

namespace AppConsole;

use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    // ...

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('my:task')
                 ->everyMinute();
    }
}

在上述示例中,我们调用 $schedule->command() 方法来注册我们的任务调度器。command() 方法接受一个参数,即我们之前定义的命令名称。使用 everyMinute() 方法,我们将任务调度器设置为每分钟运行一次。

  1. 创建中间件
    现在,我们将创建中间件类,并在其中添加调度任务的逻辑。

我们可以使用 php artisan make:middleware 命令来生成中间件的模板:

php artisan make:middleware ScheduleMiddleware

这将会在 app/Http/Middleware 目录下生成一个名为 ScheduleMiddleware.php 的文件。在该文件中,我们可以添加任务调度的逻辑。

示例代码:

namespace appHttpMiddleware;

use Closure;
use IlluminateConsoleSchedulingSchedule;
use IlluminateSupportFacadesArtisan;

class ScheduleMiddleware
{
    public function handle($request, Closure $next)
    {
        $schedule = new Schedule;

        // 在这里添加任务调度逻辑
        $schedule->command('my:task')->everyMinute();
        
        // 执行调度任务
        $schedule->run();
        
        return $next($request);
    }
}

在上述示例中,我们创建了一个名为 ScheduleMiddleware 的中间件类。在 handle() 方法中,我们创建了一个 Schedule 实例,并使用 $schedule->command() 方法注册了我们的任务调度器。然后,我们调用 $schedule->run() 方法来执行任务调度。

  1. 注册中间件
    最后,我们需要将中间件注册到 Laravel 的中间件堆栈中,以便在请求处理过程中自动调度任务。

app/Http/Kernel.php 文件中,我们可以看到一个名为 $middleware 的数组。我们可以在这里注册我们的中间件。

示例代码:

namespace AppHttp;

use IlluminateFoundationHttpKernel as HttpKernel;

class Kernel extends HttpKernel
{
    // ...

    protected $middleware = [
        // ...

        AppHttpMiddlewareScheduleMiddleware::class,
    ];

    // ...
}

在上述示例中,我们将 ScheduleMiddleware 添加到 $middleware

Exécutez la commande suivante pour générer la classe du planificateur de tâches :

rrreee
Cela générera un fichier nommé MyTask.phpdans le répertoire app/Console/Commands > fichier. Dans ce fichier, nous pouvons définir la logique du planificateur de tâches.

Exemple de code :

rrreee🎜Dans l'exemple ci-dessus, nous avons défini une classe de planificateur de tâches nommée MyTask pour exécuter notre tâche personnalisée. Nous pouvons écrire la logique des tâches qui doit être exécutée dans la méthode handle(). Dans cet exemple, nous générons simplement un message. 🎜
    🎜Enregistrer le planificateur de tâches🎜Ensuite, nous devons enregistrer le planificateur de tâches afin qu'il puisse être reconnu et planifié par le framework Laravel. 🎜
🎜Dans le fichier app/Console/Kernel.php, on peut voir qu'une méthode schedule() est définie. Nous pouvons enregistrer notre planificateur de tâches dans cette méthode. 🎜🎜Exemple de code : 🎜rrreee🎜Dans l'exemple ci-dessus, nous appelons la méthode $schedule->command() pour enregistrer notre planificateur de tâches. La méthode command() accepte un paramètre, qui est le nom de commande que nous avons défini précédemment. En utilisant la méthode everyMinute(), nous configurons le planificateur de tâches pour qu'il s'exécute toutes les minutes. 🎜
    🎜Créer un middleware🎜Maintenant, nous allons créer la classe middleware et y ajouter la logique de planification des tâches. 🎜
🎜Nous pouvons utiliser la commande php artisan make:middleware pour générer le modèle middleware : 🎜rrreee🎜Ce sera dans le répertoire app/Http/Middleware Générez un fichier nommé ScheduleMiddleware.php. Dans ce fichier, nous pouvons ajouter une logique de planification des tâches. 🎜🎜Exemple de code : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons créé une classe middleware appelée ScheduleMiddleware. Dans la méthode handle(), nous créons une instance Schedule et enregistrons notre en utilisant la méthode $schedule->command() Planificateur de tâches. Ensuite, nous appelons la méthode $schedule->run() pour effectuer la planification des tâches. 🎜
    🎜Enregistrer le middleware🎜Enfin, nous devons enregistrer le middleware dans la pile middleware de Laravel afin que les tâches puissent être automatiquement planifiées pendant le traitement des demandes. 🎜
🎜Dans le fichier app/Http/Kernel.php, nous pouvons voir un tableau nommé $middleware. Nous pouvons enregistrer notre middleware ici. 🎜🎜Exemple de code : 🎜rrreee🎜Dans l'exemple ci-dessus, nous ajoutons ScheduleMiddleware au tableau $middleware pour planifier automatiquement les tâches pendant le traitement des demandes. 🎜🎜Résumé : 🎜Dans cet article, nous avons appris à utiliser le middleware pour implémenter la planification des tâches planifiées de Laravel. Nous définissons la logique des tâches en créant une classe de planificateur de tâches et en l'enregistrant auprès du planificateur de tâches de Laravel. Ensuite, nous créons une classe middleware et y ajoutons une logique de planification de tâches. Enfin, nous enregistrons le middleware dans la pile middleware de Laravel. De cette façon, nous pouvons facilement exécuter des tâches planifiées dans Laravel. 🎜🎜J'espère que cet article vous a aidé à comprendre et à utiliser la planification des tâches planifiées dans 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!

Déclaration:
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