Maison >développement back-end >tutoriel php >Comment implémenter des tâches planifiées en PHP pour mieux compléter le traitement en arrière-plan

Comment implémenter des tâches planifiées en PHP pour mieux compléter le traitement en arrière-plan

WBOY
WBOYoriginal
2023-06-27 10:09:121544parcourir

Avec le développement continu du commerce Internet, le nombre de tâches de traitement en arrière-plan augmente également. Afin de mieux gérer ces tâches, PHP doit également être capable de mettre en œuvre la fonction de tâches planifiées. Cet article explique comment implémenter des tâches planifiées en PHP et comment mieux effectuer les tâches de traitement en arrière-plan.

1. Qu'est-ce qu'une tâche planifiée

Une tâche planifiée fait référence à l'exécution d'une tâche spécifiée à une heure spécifiée, qui peut être ponctuelle ou périodique. Dans le traitement des tâches back-end, il est souvent nécessaire d'exécuter une fonction régulièrement ou d'envoyer des emails régulièrement, etc.

2. Comment implémenter des tâches planifiées en PHP

  1. Expression Cron

Généralement, il est nécessaire d'implémenter tâches planifiées en PHP Utilisez les expressions Cron, qui sont une syntaxe spéciale utilisée pour indiquer quand exécuter une tâche. La syntaxe d'une expression Cron est composée de 6 ou 7 champs (secondes, minutes, heures, jours, mois, semaines, années), chaque champ est séparé par des espaces.

Par exemple, ce qui suit est une expression Cron :

* 0/15 10,18 * * ?* 0/15 10,18 * * ?

这个表达式的意思是:每天的上午10点和下午6点的第0分、第15分执行任务。

  1. 计划任务

PHP本身并没有内置的定时任务功能,但是可以通过操作系统的计划任务来实现。在Linux系统中,可以使用crontab命令来配置计划任务。

比如,要在每天10点执行一个PHP脚本file.php,可以通过下面的命令来创建计划任务:

crontab -e

然后添加如下的一行:

0 10 * * * php /path/to/file.php#🎜🎜 #Cette expression signifie : exécuter la tâche à la 0ème et à la 15ème minute à 10h et 18h tous les jours.

Tâches planifiées

    PHP lui-même n'a pas de fonction de tâche planifiée intégrée, mais elle peut être implémentée via les tâches planifiées du système opérateur. Sur les systèmes Linux, vous pouvez utiliser la commande crontab pour configurer les tâches planifiées.
  1. Par exemple, si vous souhaitez exécuter un script PHP file.php à 10 heures tous les jours, vous pouvez créer une tâche planifiée via la commande suivante :

crontab -e

Puis ajoutez la ligne suivante :

0 10 * * * php /path/to/file.php code>

#🎜 🎜#Chaque champ de cette ligne de commande représente : minute (0), heure (10), jour (

), mois (

), semaine (*) sont toutes les valeurs arbitraires, indiquant quotidiennement Exécuté à 10 heures. Le dernier php /path/to/file.php représente le fichier script PHP à exécuter.
  1. Packages tiers

En plus d'utiliser les tâches planifiées du système d'exploitation, il existe de nombreux packages PHP tiers qui peuvent mettre en œuvre les tâches planifiées. Par exemple, l'extension swoole de PHP peut facilement implémenter des tâches de minuterie.

Ce qui suit est un exemple :
    $serv = new SwooleHttpServer("127.0.0.1", 9501);
    
    $serv->on('WorkerStart', function($serv, $worker_id) {
        if ($worker_id == 0) {
            // 每隔10秒执行一次
            swoole_timer_tick(10000, function() {
                //todo
            });
        }
    });
    
    $serv->start();
  1. Ce code peut implémenter une tâche planifiée qui est exécutée toutes les 10 secondes, et les tâches qui doivent être traitées peuvent être effectuées dans le rappel fonction.
3. Comment mieux effectuer les tâches de traitement en arrière-plan

Multi-threading

  1. Dans le traitement des tâches en arrière-plan, Le la quantité de données à traiter peut être importante et le temps de traitement peut être long. Si plusieurs tâches sont indépendantes les unes des autres, vous pouvez envisager d'utiliser le multithread pour améliorer l'efficacité du traitement des tâches.
PHP lui-même est un langage monothread, mais nous pouvons utiliser la bibliothèque PCNTL ou l'extension swoole pour implémenter le multi-processus.

Traitement asynchrone

Dans les tâches de traitement en arrière-plan, de nombreuses opérations sont des opérations d'E/S, telles que l'envoi d'e-mails, les requêtes de base de données, etc. opérations Bloquera le thread, ce qui entraînera une réduction de l'efficacité du traitement des tâches.

Afin d'éviter ce problème, vous pouvez utiliser le traitement asynchrone. Vous pouvez utiliser des bibliothèques tierces telles que swoole et ReactPHP pour implémenter le traitement asynchrone. #🎜🎜##🎜🎜##🎜🎜#Queue#🎜🎜##🎜🎜##🎜🎜#Lors du traitement des tâches, si vous devez les exécuter séquentiellement selon certaines règles, vous pouvez envisager d'utiliser une file d'attente. Par exemple, s'il y a un lot d'e-mails à envoyer, vous pouvez mettre les e-mails dans la file d'attente, puis les retirer un par un pour les envoyer. #🎜🎜##🎜🎜#Les bibliothèques de files d'attente courantes incluent Redis, Beanstalkd, etc. #🎜🎜##🎜🎜# 4. Résumé #🎜🎜##🎜🎜# Cet article présente comment PHP implémente les tâches planifiées et comment mieux effectuer les tâches de traitement en arrière-plan. L'efficacité et la stabilité du traitement des tâches en arrière-plan peuvent être améliorées en utilisant des tâches planifiées, des packages tiers, le multithread, le traitement asynchrone et les files d'attente. #🎜🎜#

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