Méthodes et commentaires sur les paramètres pour faire fonctionner Beanstalkd en PHP

不言
Libérer: 2023-04-02 18:08:02
original
2434 Les gens l'ont consulté

Cet article présente principalement les méthodes et les commentaires sur les paramètres concernant le fonctionnement de Beanstalkd en PHP. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Introduction à Beanstalkd

.

Qu'est-ce que Beanstalkd

Beanstalk est un système de file d'attente de mémoire distribuée léger et hautes performances. Il a été conçu à l'origine pour réduire l'accès aux pages des systèmes d'applications Web à volume élevé en exécutant de manière asynchrone des tâches fastidieuses dans le système. arrière-plan Delay, a soutenu l’application Facebook Causes avec 9,5 millions d’utilisateurs.
Plus tard open source, PostRank est désormais déployé et utilisé à grande échelle, traitant des millions de tâches chaque jour. Beanstalkd est une conception typique de type Memcached. Le protocole et l'utilisation sont les mêmes, donc les utilisateurs qui ont utilisé Memcached auront l'impression que Beanstalkd semble familier.

Processus en cours d'exécution de Beanstalkd

cycle de vie typique du travail

   put            reserve               delete
  -----> [READY] ---------> [RESERVED] --------> *poof*
Copier après la connexion

travail possible Migration d'état

   put with delay               release with delay
  ----------------> [DELAYED] <------------.
                        |                   |
                 kick   | (time passes)     |
                        |                   |
   put                  v     reserve       |       delete
  -----------------> [READY] ---------> [RESERVED] --------> *poof*
                       ^  ^                |  |
                       |   \  release      |  |
                       |    `-------------&#39;   |
                       |                      |
                       | kick                 |
                       |                      |
                       |       bury           |
                    [BURIED] <---------------&#39;
                       |
                       |  delete
                        `--------> *poof*
Copier après la connexion

Installation de Beanstalkd

Ignorez l'installation, si nécessaire, veuillez vous référer à la référence

Remarque : Composer doit être installé, tutoriel link Composer Méthode d'installation

L'installation de Pheanstalk

est utilisée pour faire fonctionner la bibliothèque tierce Beanstalkd de <🎜 L'installation est ignorée. Si nécessaire, veuillez vous référer à la référence <🎜. >PHPOpération Pheanstalk

Connectez Beanstalkd

Méthode d'état de Beanstalkd
<?php
require __DIR__ . &#39;/vendor/autoload.php&#39;;

use Pheanstalk\Pheanstalk;

/**
 * 实例化beanstalk
 * 参数依次为:ip地址 端口号默认11300 连接超时时间 是否长连接
 */
$pheanstalk = new Pheanstalk(&#39;127.0.0.1&#39;, 11300, 3, false);
?>
Copier après la connexion

Statut de Beanstalkd

Retour :
$stats = $pheanstalk->stats();
Copier après la connexion

Pheanstalk\Response\ArrayResponse Object
(
    [_name:Pheanstalk\Response\ArrayResponse:private] => OK
    [storage:ArrayObject:private] => Array
        (
            [current-jobs-urgent] => 0 //当前存在优先级的任务数
            [current-jobs-ready] => 0 //当前准备就绪的任务数
            [current-jobs-reserved] => 0 //当前处于阻塞的任务数
            [current-jobs-delayed] => 0 //当前处于延迟状态的任务数
            [current-jobs-buried] => 0 //当前预留的任务数
            [cmd-put] => 0 //cmd命令为累计运行次数
            [cmd-peek] => 0
            [cmd-peek-ready] => 0
            [cmd-peek-delayed] => 0
            [cmd-peek-buried] => 0
            [cmd-reserve] => 0
            [cmd-reserve-with-timeout] => 0
            [cmd-delete] => 0
            [cmd-release] => 0
            [cmd-use] => 0
            [cmd-watch] => 0
            [cmd-ignore] => 0
            [cmd-bury] => 0
            [cmd-kick] => 0
            [cmd-touch] => 0
            [cmd-stats] => 1
            [cmd-stats-job] => 0
            [cmd-stats-tube] => 0
            [cmd-list-tubes] => 3
            [cmd-list-tube-used] => 0
            [cmd-list-tubes-watched] => 0
            [cmd-pause-tube] => 0
            [job-timeouts] => 0 //超时的任务
            [total-jobs] => 0 //任务总数
            [max-job-size] => 65535 //任务字符串大小
            [current-tubes] => 1 //当前的管道数
            [current-connections] => 1 //当前打开的连接数
            [current-producers] => 0 //当前生产者数量
            [current-workers] => 0 //当前消费者数量
            [current-waiting] => 0 //发出reserved指令,但没有响应的数量
            [total-connections] => 4 //累计链接数量
            [pid] => 530 //Beanstalkd进程id
            [version] => 1.10
            [rusage-utime] => 0.003545
            [rusage-stime] => 0.007473
            [uptime] => 105855 //运行时间(秒)
            [binlog-oldest-index] => 0
            [binlog-current-index] => 0
            [binlog-records-migrated] => 0
            [binlog-records-written] => 0
            [binlog-max-size] => 10485760
            [id] => 4199e3eca8bfdea8
            [hostname] => lmmlwendeMacBook-Air.local
        )
)
Copier après la connexion

Liste actuelle du pipeline

$listTubes = $pheanstalk->listTubes();
Copier après la connexion

Afficher les détails du pipeline

Retour :
$stats = $pheanstalk->statsTube();
Copier après la connexion

Pheanstalk\Response\ArrayResponse Object
(
    [_name:Pheanstalk\Response\ArrayResponse:private] => OK
    [storage:ArrayObject:private] => Array
        (
            [name] => default //当前管道名
            [current-jobs-urgent] => 0 //当前管道存在优先级的任务数
            [current-jobs-ready] => 0 //当前管道准备就绪的任务书
            [current-jobs-reserved] => 0 //当前管道处于阻塞的任务数
            [current-jobs-delayed] => 0 //当前管道处于延迟状态的任务数
            [current-jobs-buried] => 0 //当前管道预留的任务数
            [total-jobs] => 0 //当前管道总任务数
            [current-using] => 1 //当前管道生产者数量
            [current-watching] => 1 //当前管道消费者数量
            [current-waiting] => 0 //发出reserved指令,但没有响应的数量
            [cmd-delete] => 0
            [cmd-pause-tube] => 0
            [pause] => 0
            [pause-time-left] => 0
        )
)
Copier après la connexion

Afficher les détails de la tâche

Retour :
$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$job_stats = $pheanstalk->statsJob($job);
Copier après la connexion

Pheanstalk\Response\ArrayResponse Object
(
    [_name:Pheanstalk\Response\ArrayResponse:private] => OK
    [storage:ArrayObject:private] => Array
        (
            [id] => 1 //任务job ID
            [tube] => test //所处管道
            [state] => reserved //当前状态
            [pri] => 1024 //任务优先级(默认1024)
            [age] => 469 //任务存活时间(秒)
            [delay] => 0 //任务延迟时间(秒)
            [ttr] => 60 //任务执行时间
            [time-left] => 59 //任务在reserve状态维持的秒数
            [file] => 0 // binlog-4 默认-0
            [reserves] => 2 //总共reserve次数
            [timeouts] => 0 //任务超时次数
            [releases] => 0 //重设任务次数
            [buries] => 0 //预留次数
            [kicks] => 0 //释放预留任务次数
        )
)
Copier après la connexion

Afficher les détails de la tâche (par ID)

Méthodes de production Beanstalkd
$job =  $pheanstalk->peek(1);
$job_stats = $pheanstalk->statsJob($job);
Copier après la connexion

Spécifiez le tuyau à utiliser

$tube = $pheanstalk->useTube(&#39;default&#39;);
Copier après la connexion

Insérez les données dans le tuyau

Ou :
$tube = $pheanstalk->useTube(&#39;default&#39;);
$put = $tube->put(
    'hello, beanstalk', // 任务内容
    1024, // 任务的优先级
    10,  // 不等待直接放到ready队列中
    60 // 处理任务的时间
);
Copier après la connexion

Méthode consommateur Beanstalkd
$pheanstalk->putInTube(&#39;default&#39;,  &#39;test1&#39;, 1024, 10, 60);
Copier après la connexion

Tuyau d'écoute

$tube =  $pheanstalk->watch(&#39;user&#39;);
Copier après la connexion

Suppression ne pas Tuyaux qui doivent être surveillés

$tube =  $pheanstalk->watch(&#39;user&#39;)->ignore(&#39;default&#39;);
Copier après la connexion

Surveiller le tuyau de manière bloquée

$job =  $pheanstalk->watch(&#39;user&#39;)->reserve(4); //堵塞时间为4秒
Copier après la connexion

Liste de toutes les canalisations surveillées

$pheanstalk->listTubesWatched();
Copier après la connexion

méthode surveillance + réserve

$pheanstalk->reserveFromTube(&#39;default&#39;)
Copier après la connexion

Supprimer la tâche en cours

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->delete($job);
Copier après la connexion

Remettre la tâche en cours dans le pipeline

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->release($job);
Copier après la connexion

Renouveller la vie de la tâche (lorsque le temps de traitement de la tâche est inférieur au temps d'exécution actuel de la tâche)

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->touch($job);
//TODO
Copier après la connexion

Réserver la tâche

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->bury($job);
Copier après la connexion

Libérer les tâches réservées (passage au statut redday)

$job = $pheanstalk->peekBuried(&#39;default&#39;);
$pheanstalk->kickJob($job);
Copier après la connexion

Libérer les tâches réservées par lots

$pheanstalk->userTube(&#39;default&#39;)->kick(999); //将id小于999的预留任务全部释放
Copier après la connexion

Lire les tâches actuellement prêtes (prêt)

$job = $pheanstalk->peekReady(&#39;default&#39;);
Copier après la connexion

Lire la tâche actuellement retardée (retardée)

$job = $pheanstalk->peekDelayed(&#39;default&#39;);
Copier après la connexion

Définir un délai sur le pipeline

$pheanstalk->pauseTube(&#39;default&#39;, 100); //设置100秒延迟
Copier après la connexion

Annuler le retard sur le pipeline

Ce qui précède est l'intégralité du contenu de cet article, J'espère que cela sera utile à l'apprentissage de tout le monde. Pour obtenir de l'aide, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe !
$pheanstalk->resumeTube(&#39;default&#39;);
Copier après la connexion

Recommandations associées :

L'application de pénétration intranet Spike implémentée par PHP a été reconstruite


php appelle phantomjs vers WeChat Mini Partage de programme

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:
php
source:php.cn
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