suchen
HeimBackend-EntwicklungPHP7Die Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren

In diesem Artikel werden hauptsächlich Reids Key Space Notification und TP5 zur Implementierung verteilter Verzögerungsaufgaben vorgestellt. Ich hoffe, dass er Freunden in Not hilfreich sein wird!

Die Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren

Testumgebung: Windows 10 + phpStudy

Konfigurieren Sie die Redis-Konfigurationsdatei redis.windows.conf

notify-keyspace-events "Ex"

Starten Sie den Redis-Dienst neu

Die Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren

Öffnen Sie erneut ein Konsolenfenster und führen Sie den Befehl aus

psubscribe __keyevent@0__:expired

Öffnen Sie ein neues Fenster und führen Sie das Terminal aus, nachdem der Abonnementvorgang blockiert wurde. Informationen werden später ausgegeben:

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

Öffnen Sie ein anderes Terminal, redis-cli geben Sie redis ein, fügen Sie einen Schlüsselbenutzernamen hinzu, der in 6 Sekunden abläuft:
Die Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren

Die Befehlszeile ist abgeschlossen

2 . Mit Hilfe des TP5.1-Befehlszeilentools

Verwendung des Befehlszeilentools: https://www.kancloud.cn/manual/thinkphp5_1/354146

1 line 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. Schreiben Sie das Skript 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);
        });
    }
}

Erläuterung: Der zweite Parameter der psubscribe(patterns,patterns,callback)-Methode ist eine Callback-Funktion ein Rückruf.

Offizielle Erklärung: Anonyme Funktionen, auch Schließungen genannt, ermöglichen es Ihnen, vorübergehend eine Funktion ohne angegebenen Namen zu erstellen. Der am häufigsten als Callback-Funktionsargument verwendete Wert. Natürlich gibt es auch andere Anwendungen.

3. Führen Sie das Pay-Befehlstool im Stammverzeichnis des TP5-Projekts aus

php think pay psubscribe

4. Öffnen Sie ein neues Konsolenfenster-Terminal

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. Überprüfen Sie die Protokolldatei auf Überprüfen Sie, ob der abgelaufene Schlüssel empfangen wurde

Die Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren

6. Das Endergebnis ist wie folgt

Die Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren

Fortgeschrittener langsam erweitern

1. Die Bestellung automatisch stornieren

2. Nach Abschluss der Bestellung eine SMS senden

3. Verwandte Empfehlungen : "

PHP7-Tutorial

Das obige ist der detaillierte Inhalt vonDie Reids-Schlüsselraumbenachrichtigung von PHP7 arbeitet mit TP5 zusammen, um verteilte verzögerte Aufgaben zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:Tinywan. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),