ホームページ  >  記事  >  バックエンド開発  >  Beanstalkd を操作するための PHP メソッドとパラメーターのコメント

Beanstalkd を操作するための PHP メソッドとパラメーターのコメント

不言
不言オリジナル
2018-07-06 16:52:202420ブラウズ

この記事では、PHP で Beanstalkd を操作するためのメソッドとパラメータのコメントを主に紹介します。一定の参考値があります。今、みんなに共有します。必要な友人は参考にしてください。

Beanstalkd の概要

Beanstalkd とは

#Beanstalk は、高性能で軽量な分散メモリ キュー システムです。元々は、時間のかかるタスクをバックグラウンドで非同期に実行することで、大容量の Web アプリケーション システムのページ アクセスを削減するように設計されました。遅れて、950 万人のユーザーを持つ Facebook Causes アプリケーションをサポートしました。

その後オープンソース化された PostRank は、現在では大規模に展開および使用され、毎日何百万ものタスクを処理しています。 Beanstalkd は典型的な Memcached に似た設計であり、プロトコルや使用方法が同じであるため、memcached を使用したことのあるユーザーは Beanstalkd に親しみを感じるでしょう。

Beanstalkd 実行プロセス

ジョブの一般的なライフ サイクル

   put            reserve               delete
  -----> [READY] ---------> [RESERVED] --------> *poof*

ジョブの可能な状態移行

   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*

Beanstalkd のインストール

インストールをスキップします。必要に応じて、クリック リファレンスを参照してください。

注: Composer をインストールする必要があります。チュートリアル リンク Composer のインストール方法
Pheanstalk のインストール

Beanstalkd の操作に使用される PHP サードパーティ ライブラリ。インストールはスキップされます。必要に応じて、リファレンスを参照してください

Pheanstalk 操作

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);
?>

Beanstalkd ステータス メソッド

Beanstalkd ステータス

$stats = $pheanstalk->stats();

Return:

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
        )
)

#現在のパイプライン リスト

$listTubes = $pheanstalk->listTubes();
#パイプラインの詳細を表示

#

$stats = $pheanstalk->statsTube();
Return:
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
        )
)

タスクの詳細を表示

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$job_stats = $pheanstalk->statsJob($job);
Return:
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 //释放预留任务次数
        )
)
# #タスクの詳細の表示 (ID 別)

$job =  $pheanstalk->peek(1);
$job_stats = $pheanstalk->statsJob($job);

Beanstalkd プロデューサ メソッド使用するパイプラインの指定

$tube = $pheanstalk->useTube(&#39;default&#39;);

データをパイプに挿入します

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

または:

$pheanstalk->putInTube(&#39;default&#39;,  &#39;test1&#39;, 1024, 10, 60);
Beanstalkd コンシューマー メソッド

リッスンパイプ

$tube =  $pheanstalk->watch(&#39;user&#39;);

監視する必要のないパイプを削除します

$tube =  $pheanstalk->watch(&#39;user&#39;)->ignore(&#39;default&#39;);

ブロックされた方法でパイプをリッスンします#

$job =  $pheanstalk->watch(&#39;user&#39;)->reserve(4); //堵塞时间为4秒

#監視対象のパイプをすべてリストします

#

$pheanstalk->listTubesWatched();
監視予約メソッド

$pheanstalk->reserveFromTube(&#39;default&#39;)
現在のタスクを削除します

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->delete($job);
現在のタスクをリセットしますtask タスクの寿命を延ばすためにパイプに入れます

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->release($job);
(タスクの処理時間が現在のタスク実行時間より短い場合)

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->touch($job);
//TODO
タスクを予約

#

$job =  $pheanstalk->watch(&#39;default&#39;)->reserve();
$pheanstalk->bury($job);
##予約タスクを解除(当日ステータスに変更)

$job = $pheanstalk->peekBuried(&#39;default&#39;);
$pheanstalk->kickJob($job);
#予約済みタスクをバッチで解放する

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

現在準備中のタスクを読み込む (準備完了) )

$job = $pheanstalk->peekReady(&#39;default&#39;);

現在遅延状態にあるタスクを読み取ります (遅延)

$job = $pheanstalk->peekDelayed(&#39;default&#39;);

Setパイプラインの遅延

$pheanstalk->pauseTube(&#39;default&#39;, 100); //设置100秒延迟

パイプラインの遅延をキャンセルする

$pheanstalk->resumeTube(&#39;default&#39;);

上記はこの記事の全内容です、皆さんの学習に役立つことを願っています。 ヘルプ、その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。 関連する推奨事項:

PHP によって実装されたイントラネット侵入アプリケーション Spike が再構築されました

php は WeChat Mini に phantomjs を呼び出しますプログラムの共有

以上がBeanstalkd を操作するための PHP メソッドとパラメーターのコメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。