Heim > PHP-Framework > Swoole > Hauptteil

Wie Swoole Redis-Daten überwacht

藏色散人
Freigeben: 2020-04-10 10:00:40
Original
3353 Leute haben es durchsucht

Wie Swoole Redis-Daten überwacht

swooleWie überwacht man Redis-Daten?

Laravel verwendet Swoole, um Redis zu überwachen

Bevor Sie beginnen, stellen Sie bitte sicher, dass Redis korrekt installiert ist und normal läuft.

Laravel-Code

Erstellen Sie ein neues RedisTest-Ereignis im AppEvents-Verzeichnis

<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class RedisTest
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $message;
    /**
    * Create a new event instance.
    *
    * @return void
    */
    public function __construct($message)
    {
        $this->message = $message;
    }
    /**
    * Get the channels the event should broadcast on.
    *
    * @return \Illuminate\Broadcasting\Channel|array
    */
    public function broadcastOn()
    {
        return new PrivateChannel(&#39;channel-name&#39;);
    }
}
Nach dem Login kopieren

AppListenersRedisTestListener-Abhörereigniscode

<?php
namespace App\Listeners;
use App\Events\RedisTest;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Log;
class RedisTestListener
{
    /**
    * Create the event listener.
    *
    * @return void
    */
    public function __construct()
    {
        //
    }
    /**
    * Handle the event.
    *
    * @param  RedisTest  $event
    * @return void
    */
    public function handle(RedisTest $event)
    {
        $message = $event->message;
        Log::info(&#39;the message received from subscribed redis channel msg_0: &#39;.$message);
    }
}
Nach dem Login kopieren

AppProvidersEventServiceProvider-Registrierungsereignis/Abhörbeziehung

protected $listen = [
        &#39;App\Events\RedisTest&#39; => [
            &#39;App\Listeners\RedisTestListener&#39;,
        ],
    ];
Nach dem Login kopieren

Befehle abhören

AppConsoleCommandsRedisSubscribe-Code lautet wie folgt

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use swoole_redis;
use Illuminate\Support\Facades\Event;
use App\Events\RedisTest;
class RedisSubscribe extends Command
{
    /**
    * The name and signature of the console command.
    *
    * @var string
    */
    protected $signature = &#39;redis:subscribe&#39;;
    /**
    * The console command description.
    *
    * @var string
    */
    protected $description = &#39;deamon process to subscribe redis broadcast&#39;;
    /**
    * Create a new command instance.
    *
    * @return void
    */
    public function __construct()
    {
        parent::__construct();
    }
    /**
    * Execute the console command.
    *
    * @return mixed
    */
    public function handle()
    {
        $client = new swoole_redis;
        $client->on(&#39;message&#39;, function (swoole_redis $client, $result) {
            var_dump($result);
            static $more = false;
            if (!$more and $result[0] == &#39;message&#39;)
            {
                echo "trigger Event RedisTest\n";
                Event::fire(new RedisTest($result[2]));
            }
        });
        $client->connect(&#39;127.0.0.1&#39;, 6379, function (swoole_redis $client, $result) {
            echo "connect\n";
            $client->subscribe(&#39;msg_0&#39;);
        });
    }
}
Nach dem Login kopieren

Laravel-Teil des Codes ist abgeschlossen

============= ======= ==============

Supervisor-Verwaltungsprozess

Erstellen Sie eine neue echo.conf in /etc/supervisor/conf .d-Ordner, der Code lautet wie folgt

[group:echos]
programs=echo-queue,echo-redis
[program:echo-queue]
command=php artisan queue:work
directory=/home/bella/Downloads/lnmp/echo1.0/echo
user=bella
autorestart=true
redirect_stderr=true
stdout_logfile=/home/bella/Downloads/lnmp/echo1.0/echo/storage/logs/queue.log
loglevel=info
[program:echo-redis]
command=php artisan redis:subscribe
directory=/home/bella/Downloads/lnmp/echo1.0/echo
user=bella
autorestart=true
redirect_stderr=true
stdout_logfile=/home/bella/Downloads/lnmp/echo1.0/echo/storage/logs/redis.log
loglevel=info
Nach dem Login kopieren

Führen Sie nach Abschluss den folgenden Befehl zum Neuladen aus

supervisorctl reload
Nach dem Login kopieren

================== ============== ===

Geben Sie den Redis-Client ein und veröffentlichen Sie eine Broadcast-Benachrichtigung im msg_0-Kanal

publish msg_0 "Hello Bella"
Nach dem Login kopieren

Wenn die Benachrichtigung per Broadcast gesendet wird Im letzten Protokoll von storagelogslaravel.log im Laravel-Verzeichnis aufgezeichnet, hört Redis zu Funktionsimplementierung

Das obige ist der detaillierte Inhalt vonWie Swoole Redis-Daten überwacht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage