Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das PHP-Redis502-Fehlerproblem

So lösen Sie das PHP-Redis502-Fehlerproblem

藏色散人
藏色散人Original
2022-01-28 10:03:552274Durchsuche

Lösung für den PHP-Redis502-Fehler: 1. Verwenden Sie „sudo apt-get install php5-redis“ oder laden Sie phpredis auf gitHub herunter. 2. Neu kompilieren und installieren.

So lösen Sie das PHP-Redis502-Fehlerproblem

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 5.5.30, DELL G3-Computer

Wie löse ich das PHP-Redis502-Fehlerproblem?

nginx 502, wenn PHP-Redis-Set gelöst wird

PHP Version 5.5.30-1+deb.sury.org~trusty+1
redis 3.0.1,

durch Herunterladen von pr.tar. Die von gz installierte PHP-Redis-Erweiterung, Version 2.10.

Führen Sie $redis->set('test', 'hello world') aus und melden Sie den Nginx 502-Fehler (der Nginx 502-Fehler bereitet wirklich Kopfschmerzen).

Das Problem liegt bei $this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);

Der Grund dafür ist, dass die PHP-Redis-Erweiterungsversion 2.10 zu niedrig ist, Sie Sie können sudo apt- get install php5-redis verwenden oder

https://github.com/phpredis/phpredis

auf gitHub herunterladen und durch Kompilieren installieren.

apt-get install Die installierte Version ist 2.2.7.

 public function conn() {undefined
        try {undefined
            $this->_redis->pconnect($this->host, $this->port, $this->timeout);
            // Set client option. must AFTER connected
            //var_dump(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);exit();
           $this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);
           //$this->_redis->setOption(0, 0);
            $this->_redis->auth("xxxrs");         // 此处是为 redis 配置的验证密码
 
            $this->connected = true;
 
        } catch (RedisException $e) {undefined
            throw new CHttpException(500, "Redis occurs an error:" . $e->getMessage());
        }
    }

Wenn Sie den roten Codeabschnitt verwenden, wird ein 502-Fehler gemeldet, aber wenn Sie den grünen Codeabschnitt verwenden, gibt es kein Problem .

setOption Ist das eine seltsame Sache? Habe die PHP-Redis-API überprüft

$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE);   // don't serialize data  不序列化数据
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);    // use built-in serialize/unserialize  用php内置的序列化
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY);   // use igBinary serialize/unserialize 用扩展IGBINARY序列化
$redis->setOption(Redis::OPT_PREFIX, 'myAppName:'); // use custom prefix on all keys redis key前缀
 
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);  用此就报502

Warum geht es schief, wenn die integrierte Serialisierung von PHP verwendet wird? Was ist passiert?

Später habe ich die IGBINARY-Erweiterung installiert, aber es hat immer noch nicht funktioniert. Schließlich habe ich die neueste Version 2.24 von PHP-Redis installiert und erneut ausgeführt, und es gab überhaupt kein Problem.

2.24 Version PHP-Redis-Quellcode-Adresse https://github.com/nicolasff/phpredis

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

Redis::__construct constructiontor

$redis = new Redis();

connect, open link redis service

parameter

host: string, service address

port: int, port number

Timeout: Float, Linkdauer (optional, Standard ist 0, keine Begrenzung der Linkzeit)

Hinweis: Es gibt auch Zeit in redis.conf, der Standardwert ist 300

pconnect, Popen-Links, die nicht aktiv geschlossen werden

Beziehen Sie sich auf das Obige.

setOption legt den Redis-Modus fest

Das obige ist der detaillierte Inhalt vonSo lösen Sie das PHP-Redis502-Fehlerproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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