Laravel est un framework PHP populaire qui fournit de nombreux composants et outils disponibles, notamment la planification des tâches. Dans cet article, nous verrons comment utiliser la planification des tâches dans les applications Laravel.
Qu'est-ce que la planification des tâches ?
La planification des tâches fait référence à la technologie permettant d'exécuter certaines tâches spécifiées conformément au plan. Par exemple, sauvegardez votre base de données toutes les heures ou envoyez des rapports tous les jours. Dans Laravel, la planification des tâches est similaire aux onglets Cron, mais plus facile à mettre en œuvre et à gérer.
Le planificateur de tâches de Laravel utilise les outils de ligne de commande Artisan pour gérer la planification, notamment les sockets CRON et Powershell.
Voyons comment implémenter la planification des tâches dans Laravel.
La première étape - Créer une tâche
La création d'une tâche est la première étape pour mettre en œuvre la planification des tâches. Les tâches de planification dans Laravel sont présentées sous forme de classes. La conversion des tâches en classes permet une meilleure gestion et des tests en définissant la logique à exécuter. Créons un exemple de tâche TutorialTask
: TutorialTask
:
<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class TutorialTask implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Execute the job. * * @return void */ public function handle() { // Your logic to execute every minute. \Log::info('Task executed at '.now()); } }
这个任务逻辑很简单,每分钟记录一条信息到日志中。现在,我们已经创建了一个任务,但它不会自动执行。我们需要为它设置调度。
第二步——在控制台中设置调度
Laravel提供了许多可以将任务添加到调度中的方法。在这里,我们使用schedule
方法在控制台中设置调度。
$schedule->job(new TutorialTask)->everyMinute();
everyMinute
方法表示这个任务每分钟都会执行。您可以使用其他预定义的方法,如每小时(hourly
)、每天(daily
)、每月(monthly
)或每周(weekly
)。
或者,您可以定义我们自己的频率规则:
$schedule->job(new TutorialTask)->everyFiveMinutes();
这个规则指定任务应该每五分钟运行一次。
第三步——启动任务调度器
现在我们已经为任务设置了调度,接下来我们需要启动任务调度器。我们可以在服务器上运行调度器,也可以使用Laravel自带的计划调度器,它是通过设置Cron Tab来运行的。
在控制台中运行以下命令:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这个命令将每分钟运行一次Laravel的调度器。您需要将/path-to-your-project
替换为您的Laravel应用程序的路径。>> /dev/null
指示将所有输出转发到/dev/null
中。
最后一步——启动队列(如果需要)
如果您的应用程序使用队列,则需要启用队列调度器。Laravel使用Redis或Beanstalkd等后端驱动程序来处理队列任务。您需要按照以下步骤启用队列调度器:
在.env
文件中定义QUEUE_DRIVER
:
QUEUE_DRIVER=redis
在config/queue.php
中设置队列连接:
'default' => env('QUEUE_DRIVER', 'redis'), 'connections' => [ ..... 'redis' => [ 'driver' => 'redis', 'connection' => 'your-default-redis-connection', 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, ], ..... ]
修改.env
REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 REDIS_QUEUE=defaultLa logique de cette tâche est très simple, enregistrant un message dans le journal toutes les minutes. Maintenant, nous avons créé une tâche, mais elle ne sera pas exécutée automatiquement. Nous devons établir un calendrier pour cela. Étape 2 - Configurer le planning dans la console
Laravel propose de nombreuses méthodes pour ajouter des tâches au planning. Ici, nous utilisons la méthode schedule
pour définir le planning dans la console. La méthode
php artisan queue:work redis --daemon
everyMinute
signifie que cette tâche sera exécutée toutes les minutes. Vous pouvez utiliser d'autres méthodes prédéfinies telles que horaire (hourly
), quotidienne (daily
), mensuelle (monthly
) ou hebdomadaire (weekly
).
/path-to-your-project
par le chemin d'accès à votre application Laravel. >> /dev/null
ordonne que toutes les sorties soient transmises à /dev/null
. 🎜🎜Dernière étape : démarrer la file d'attente (si nécessaire) 🎜Si votre application utilise des files d'attente, vous devez activer le planificateur de file d'attente. Laravel utilise des pilotes backend comme Redis ou Beanstalkd pour gérer les tâches de file d'attente. Vous devez suivre ces étapes pour activer le planificateur de file d'attente : 🎜🎜 Définissez QUEUE_DRIVER
dans le fichier .env
: 🎜rrreee🎜Dans config/queue.php code> Définissez la connexion à la file d'attente dans : 🎜rrreee🎜Modifiez le fichier <code>.env
pour spécifier la connexion à la file d'attente : 🎜rrreee🎜Démarrez maintenant le planificateur de file d'attente : 🎜rrreee🎜Cette commande démarrera le planificateur de file d'attente et démarrera exécuter des tâches. 🎜🎜Conclusion : 🎜La fonctionnalité de planification des tâches de Laravel vous permet d'exécuter des commandes, d'exécuter des programmes ou d'envoyer des e-mails à la demande. En créant des tâches planifiées et en les ajoutant à la liste des tâches, vous pouvez facilement gérer et exécuter des tâches. Au cours de ce processus, n'oubliez pas d'activer le planificateur ou le planificateur de files d'attente afin que les tâches s'exécutent aux heures planifiées ou dans une file d'attente prioritaire. Bonne chance pour utiliser le planificateur de tâches Laravel pour améliorer les performances et la réactivité de votre application. 🎜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!