Maison  >  Article  >  cadre php  >  Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

藏色散人
藏色散人avant
2020-07-17 13:23:296140parcourir

La colonne tutorielle suivante du framework thinkphp vous présentera comment utiliser thinkphp-queue dans ThinkPHP5. J'espère qu'elle sera utile aux amis dans le besoin !

Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

Récemment, l'éditeur a reçu un message d'amis du groupe qui ne savent pas comment utiliser php-queue lors de l'utilisation du framework ThinkPHP5.0 (c'est vraiment embarrassant, il y a de nombreux commentaires à ce sujet sur Internet) tutoriel). Haha, peu importe si vous ne voulez pas y faire référence. Laissez-moi l'examiner en détail ~~ À propos de ce qu'est une file d'attente ? Que résout la file d’attente ? Quels sont les scénarios de files d’attente ? ... et ainsi de suite. Les développeurs doivent d'abord comprendre ces problèmes par eux-mêmes. De plus, ce cas n'effectue que des opérations spécifiques sur le framework ThinkPHP.

1. Installez thinkphp-queue

Il est recommandé d'utiliser Composer pour l'installation, de basculer vers le répertoire racine du projet et d'exécuter : composer require topthink/think-queue

2. Configurer l'environnement de stockage de la file d'attente des messages

Le fichier de configuration se trouve dans applicationextraqueue.php, comme indiqué sur la figure : Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

Utilisation le pilote Redis. Si l'environnement Redis n'a pas encore été installé, veuillez l'installer vous-même, très simple, ou vous pouvez également utiliser d'autres types de pilotes, comme indiqué sur la figure : Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

3. Création de tâches

On crée un fichier nommé Index.php sous le module index La méthode de file d'attente (ça doit être comme ça ? Bien sûr que non, ce tutoriel n'est qu'un exemple, vous pouvez créer un nouveau module, et le le nom de la méthode peut être autre), comme le montre la figure :

Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

4. Traitement de la consommation et de la suppression des messages de tâche

Nous créons un fichier de travail sous le module index, qui est utilisé pour traiter le mode de consommation, comme le montre la figure : Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

Sous la classe Demo, créons une méthode fire, qui est la méthode par défaut appelé par la file d'attente des messages. Comme le montre l'image :

Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

Ce qui précède est la création de la tâche terminée--"Push--"Consommation.
Dans le navigateur ou le terminal, exécutez notre méthode index/queue.html pour terminer la création et le push Concernant la consommation des tâches, vous pouvez vous référer à la commande et basculer vers le répertoire racine du projet dans le terminal :

5. Surveillez les tâches et exécutez

php think queue:listen
php think queue:work –daemon(不加–daemon为执行单个任务)

Pour des paramètres facultatifs spécifiques, vous pouvez entrer la commande et ajouter –help pour afficher

peut être utilisé avec. superviseur pour s'assurer que le processus est résident

1.1 Mode commande

  • queue:subscribe command [As du 15/02/2017, l'auteur n'a pas encore implémenté ce mode, sauter]

  • queue:work command

    work command : Cette commande lancera un processus de travail pour traiter la file d'attente des messages.

    php think queue:work --queue helloJobQueue
  • queue:listen command

    listen command : Cette commande créera un processus parent d'écoute, puis le processus parent créera un travail via proc_open(‘php think queue:work’) L'enfant Le processus gère la file d'attente des messages et limite le temps d'exécution du processus de travail.

    php think queue:listen --queue helloJobQueue

2.2 Paramètres de ligne de commande

  • Mode de travail

    php think queue:work \
    --daemon            //是否循环执行,如果不加该参数,则该命令处理完下一个消息就退出
    --queue  helloJobQueue  //要处理的队列的名称
    --delay  0 \        //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
    --force  \          //系统处于维护状态时是否仍然处理任务,并未找到相关说明
    --memory 128 \      //该进程允许使用的内存上限,以 M 为单位
    --sleep  3 \        //如果队列中无任务,则sleep多少秒后重新检查(work+daemon模式)或者退出(listen或非daemon模式)
    --tries  2          //如果任务已经超过尝试次数上限,则触发‘任务尝试次数超限’事件,默认为0
  • Mode d'écoute

    php think queue:listen \
    --queue  helloJobQueue \   //监听的队列的名称
    --delay  0 \         //如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
    --memory 128 \       //该进程允许使用的内存上限,以 M 为单位
    --sleep  3 \         //如果队列中无任务,则多长时间后重新检查,daemon模式下有效
    --tries  0 \         //如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0
    --timeout 60         //创建的work子进程的允许执行的最长时间,以秒为单位

    Vous pouvez voir qu'en mode d'écoute, le paramètre --deamon n'est pas inclus. La raison sera expliquée ci-dessous

. Linux démarre le processus démon. Prenez tp5 comme exemple

nohup php think queue:work --daemon --queue 任务名称 &
 nohup php think queue:work --daemon --queue 任务名称 &

Pour vérifier le nombre de tâches sous Linux, vous pouvez saisir : jobs -l

Utiliserez-vous thinkphp-queue dans ThinkPHP5 ?

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer