この記事では分散遅延タスクを実装するためのReidsキースペース通知とTP5を中心に紹介しますので、困っている友人の参考になれば幸いです!
テスト環境: Windows 10 phpStudy
redis 構成ファイル redis.windows.conf
notify-keyspace-events "Ex"
redis サービスを再起動
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 秒で期限切れになるキーのユーザー名を追加します:
<?php /**.------------------------------------------------------------------------------------------------------------------- * | Github: https://github.com/Tinywan * '------------------------------------------------------------------------------------------------------------------*/ 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('pay') ->addArgument('type', Argument::REQUIRED, "the type of the task that pay needs to run") ->setDescription('this is payment system command line tools'); } // 执行指令 public function execute(Input $input, Output $output) { $type = $input->getArgument('type'); if ($type == 'psubscribe') { // 发布订阅任务 $this->psubscribe(); } } /** * Redis 发布订阅模式 */ private function psubscribe() { $service = new RedisSubscribe(); $service->sub(); } }2. スクリプト RedisSubscribe.php
<?php /**.------------------------------------------------------------------------------------------------------------------- * | Github: https://github.com/Tinywan * '------------------------------------------------------------------------------------------------------------------*/ namespace app\pay\service; use redis\BaseRedis; use think\facade\Log; class RedisSubscribe { public function sub() { Log::error(get_current_date().'--过期事件的订阅-- '); $redis = BaseRedis::location(); //这里是直接连接本地redis $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1); $redis->psubscribe(array('__keyevent@0__:expired'), function ($redis, $pattern, $chan, $msg) { Log::error('[1]--过期事件的订阅 ' . $msg); }); } }を作成します 説明: psubscribe(patterns, pattern, callback) メソッドの 2 番目のパラメーターはコールバック関数です。クロージャをコールバックとして使用します。 公式説明: クロージャとも呼ばれる匿名関数を使用すると、名前を指定せずに関数を一時的に作成できます。コールバック関数の引数として最も一般的に使用される値。もちろん、他のアプリケーションもあります。 3. TP5 プロジェクトのルート ディレクトリにある有料コマンド ツールを実行します
php think pay psubscribe4. 新しいコンソール ウィンドウのターミナルを開きます
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. ログ ファイルを確認します。期限切れのキーを受信したかどうかを確認してください
1. 注文を自動的にキャンセルする2. 注文完了後にテキスト メッセージを送信する3. タスクを遅らせるなど関連する推奨事項: 「
PHP7 チュートリアル》
以上がPHP7 の Reid キー空間通知は TP5 と連携して分散遅延タスクを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
声明
この記事はTinywanで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事
Inzoi:学校と大学への応募方法
1 か月前ByDDD
Atomfallのサイトオフィスキーを見つける場所
4週間前ByDDD

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

ホットトピック
Gmailメールのログイン入り口はどこですか?
7889
15


Java チュートリアル
1650
14


CakePHP チュートリアル
1411
52


Laravel チュートリアル
1302
25


PHP チュートリアル
1248
29

