Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das PHP-Redis502-Fehlerproblem
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.
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!