Maison >développement back-end >Problème PHP >Comment résoudre le problème d'erreur php redis502

Comment résoudre le problème d'erreur php redis502

藏色散人
藏色散人original
2022-01-28 10:03:552301parcourir

Solution à l'erreur php redis502 : 1. Utilisez "sudo apt-get install php5-redis" ou téléchargez phpredis sur gitHub ; 2. Recompilez et installez.

Comment résoudre le problème d'erreur php redis502

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn