Solution à l'erreur php redis502 : 1. Utilisez "sudo apt-get install php5-redis" ou téléchargez phpredis sur gitHub ; 2. Recompilez et installez.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 5.5.30, ordinateur DELL G3
Comment résoudre le problème d'erreur php redis502 ?
nginx 502 lorsque php redis set résout
PHP Version 5.5.30-1+deb.sury.org~trusty+1 redis 3.0.1,
en téléchargeant pr.tar L'extension php-redis installée par gz, version 2.10.
Exécutez $redis->set('test', 'hello world') et signalez l'erreur nginx 502 (l'erreur nginx 502 est vraiment un casse-tête).
Le problème est situé dans $this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);
La raison est que l'extension php-redis version 2.10 est trop basse, vous pouvez utiliser sudo apt- get install php5-redis ou télécharger
https://github.com/phpredis/phpredis
sur gitHub et installer en compilant.
apt-get install La version installée est la 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()); } }
Si vous utilisez la section de code rouge, une erreur 502 sera signalée, mais si vous utilisez la section de code vert, il n'y aura aucun problème .
setOption Est-ce une chose bizarre ? J'ai vérifié l'API php-redis
$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
Pourquoi cela se passe-t-il mal lors de l'utilisation de la sérialisation intégrée de PHP ? Ce qui s'est passé?
Plus tard, j'ai installé l'extension IGBINARY, mais cela ne fonctionnait toujours pas. Enfin, j'ai installé la dernière version 2.24 de php-redis et je l'ai réexécuté, et il n'y a eu aucun problème.
adresse du code source php-redis de la version 2.24 https://github.com/nicolasff/phpredis
===================== ===
Redis ::__construct constructor
$redis = new Redis();
connecter, ouvrir le lien service redis
paramètres
hôte : chaîne, adresse du service
port : int, numéro de port
timeout : float, durée du lien (facultatif, la valeur par défaut est 0, aucune limite de durée de liaison)
Remarque : il y a aussi du temps dans redis.conf, la valeur par défaut est 300
pconnect, liens popen qui ne seront pas activement fermés
Reportez-vous à ce qui précède
setOption définit le mode redis
getOption Afficher le mode défini par redis
ping Afficher l'état de la connexion
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!