Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns darüber sprechen, wie PHP es dem Swoole/Pool-Prozesspool ermöglicht, persistente Redis-Verbindungen zu implementieren

Lassen Sie uns darüber sprechen, wie PHP es dem Swoole/Pool-Prozesspool ermöglicht, persistente Redis-Verbindungen zu implementieren

藏色散人
藏色散人nach vorne
2023-02-08 10:50:294158Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über PHP und stellt vor allem vor, wie Sie mit PHPphp eine dauerhafte Redis-Verbindung herstellen können. Ich hoffe, dass es für alle hilfreich ist .

Lassen Sie uns darüber sprechen, wie PHP es dem Swoole/Pool-Prozesspool ermöglicht, persistente Redis-Verbindungen zu implementieren

php ermöglicht dem Swoole|Pool-Prozesspool die Implementierung des Redis-Prozesspools für persistente Verbindungen

, basierend auf dem Manager-Verwaltungsprozessmodul von SwooleServer. Im Vergleich zu Process ist es einfacher, mehrere Prozesse zu implementieren, und Entwickler können Prozessverwaltungsfunktionen implementieren, ohne zu viel Code zu schreiben mehrere Kerne CPU-Serverprogramm.

Swoole-Prozesspool implementiert Redis-Datenlesen

Im folgenden Fall wird der Redis-Prozesspool über WorkerStart gestartet und die Redis-Listendaten werden dauerhaft gelesen, wenn WorkerStop alle Verbindungen trennt.

Schritt eins: Kodierungscode

Datei: d10.php

<?php

use Swoole\Process;
use Swoole\Coroutine;

// 指定5个工作进程
$pool = new Process\Pool(5);
// 设置启用协程
$pool->set([&#39;enable_coroutine&#39; => true]);

/**
* onWorkerStart 子进程启动
* @param \Swoole\Process\Pool $pool Pool对象
* @param int $workerId   WorkerId当前工作进程的编号,底层会对子进程进行标号
**/
$pool->on("WorkerStart", function (Process\Pool $pool, $workerId) {
// 输出当前工作进程
   echo "Worker #{$workerId} is started\n";

   // 实例化化连接redis
   $redis = new Redis();
   $redis->pconnect(&#39;127.0.0.1&#39;, 6379);
   // 指定redis键
   $key = "key1";

   // 循环读取列表数据
   while (true) {
    // 弹出列表最后一个元素
       $msgs = $redis->brpop($key, 2);
       // 元素值为空则跳过
       if ( $msgs == null) {
           continue;
       }
       // 打印获取的值
       var_dump($msgs);
       echo "Processed by Worker#{$workerId}\n";
   }
});

// 子进程结束
$pool->on("WorkerStop", function ($pool, $workerId) {
   echo "Worker#{$workerId} is stopped\n";
});

// 启动工作进程
$pool->start();

Schritt zwei: Starten Sie den Redis-Dienst und schreiben Sie Listendaten über den Client

In diesem Fall muss PHP die Redis-Erweiterung installieren

# 通过redis客户端连接
./redis-cli

127.0.0.1:6379> lpush key1 &#39;world&#39;

Kopieren Sie den Code

Dritter Schritt: Führen Sie d10.php aus.

php d10.php
. Schritt 4: Überprüfen Sie den Prozess Die Redis-Liste wird sofort ausgegeben und auf dem Bildschirm ausgedruckt.

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie PHP es dem Swoole/Pool-Prozesspool ermöglicht, persistente Redis-Verbindungen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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