検索
ホームページバックエンド開発PHP7PHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装します

この記事では分散遅延タスクを実装するためのReidsキースペース通知とTP5を中心に紹介しますので、困っている友人の参考になれば幸いです!

PHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装します

テスト環境: Windows 10 phpStudy

redis 構成ファイル redis.windows.conf

notify-keyspace-events "Ex"

redis サービスを再起動

PHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装します

##コンソール ウィンドウを再度開き、コマンド

psubscribe __keyevent@0__:expired

新しいウィンドウを開き、サブスクリプション操作をブロックした後にターミナルを実行します。しばらくすると、情報が表示されます出力:

C:\Users\admin>redis-cli
127.0.0.1:6379> psubscribe __keyevent@0__:expired
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "__keyevent@0__:expired"
3) (integer) 1

別のターミナルを開き、redis-cli で redis を入力し、6 秒で期限切れになるキーのユーザー名を追加します:


PHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装します

コマンド ラインが完了しました

2. TP5 .1 コマンド ライン ツールを使用します。

コマンド ライン ツールの使用: https://www.kancloud.cn/manual/thinkphp5_1/354146

1.新しいコマンドライン pay

<?php
/**.-------------------------------------------------------------------------------------------------------------------
 * |  Github: https://github.com/Tinywan
 * &#39;------------------------------------------------------------------------------------------------------------------*/
 
namespace app\common\command;
 
use app\pay\service\RedisSubscribe;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\Output;
 
class Pay extends Command
{
    // 配置指令
    public function configure()
    {
        $this->setName(&#39;pay&#39;)
          ->addArgument(&#39;type&#39;, Argument::REQUIRED, "the type of the task that pay needs to run")
          ->setDescription(&#39;this is payment system command line tools&#39;);
    }
 
    // 执行指令
    public function execute(Input $input, Output $output)
    {
        $type = $input->getArgument(&#39;type&#39;);
        if ($type == &#39;psubscribe&#39;) {
            // 发布订阅任务
            $this->psubscribe();
        }
    }
 
    /**
     * Redis 发布订阅模式
     */
    private function psubscribe()
    {
        $service = new RedisSubscribe();
        $service->sub();
    }
}

2. スクリプト RedisSubscribe.php

<?php
/**.-------------------------------------------------------------------------------------------------------------------
 * |  Github: https://github.com/Tinywan
 * &#39;------------------------------------------------------------------------------------------------------------------*/
 
namespace app\pay\service;
 
use redis\BaseRedis;
use think\facade\Log;
 
class RedisSubscribe
{
    public function sub()
    {
        Log::error(get_current_date().&#39;--过期事件的订阅-- &#39;);
        $redis = BaseRedis::location(); //这里是直接连接本地redis
        $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1);
        $redis->psubscribe(array(&#39;__keyevent@0__:expired&#39;), function ($redis, $pattern, $chan, $msg) {
            Log::error(&#39;[1]--过期事件的订阅 &#39; . $msg);
        });
    }
}

を作成します 説明: psubscribe(patterns, pattern, callback) メソッドの 2 番目のパラメーターはコールバック関数です。クロージャをコールバックとして使用します。

公式説明: クロージャとも呼ばれる匿名関数を使用すると、名前を指定せずに関数を一時的に作成できます。コールバック関数の引数として最も一般的に使用される値。もちろん、他のアプリケーションもあります。

3. TP5 プロジェクトのルート ディレクトリにある有料コマンド ツールを実行します

php think pay psubscribe

4. 新しいコンソール ウィンドウのターミナルを開きます

C:\Users\admin>redis-cli
127.0.0.1:6379> setex UserName 10 Tinywan
OK
127.0.0.1:6379> get UserName
"Tinywan"
127.0.0.1:6379> get UserName
(nil)
127.0.0.1:6379>

5. ログ ファイルを確認します。期限切れのキーを受信したかどうかを確認してください

PHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装します

6。最終結果は次のとおりです。

PHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装します

より高度でゆっくりとしたものです。 Expand

1. 注文を自動的にキャンセルする

2. 注文完了後にテキスト メッセージを送信する

3. タスクを遅らせるなど

関連する推奨事項: 「

PHP7 チュートリアル

以上がPHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はTinywanで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい