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

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

不言
リリース: 2023-04-02 18:08:02
オリジナル
2474 人が閲覧しました

この記事では、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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート