Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menyelesaikan masalah ralat php redis502
Penyelesaian kepada ralat php redis502: 1. Gunakan "sudo apt-get install php5-redis" atau muat turun phpredis pada gitHub 2. Susun semula dan pasang.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 5.5.30, komputer DELL G3
Cara menyelesaikan masalah ralat php redis502?
Nginx 502 apabila set php redis diselesaikan
PHP Version 5.5.30-1+deb.sury.org~trusty+1 redis 3.0.1,
Dengan memuat turun sambungan php-redis yang dipasang oleh pr.tar.gz, versinya adalah 2.10.
Laksanakan $redis->set('test', 'hello world') dan laporkan ralat nginx 502 (ralat nginx 502 benar-benar sakit kepala).
Masalahnya terletak di $this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);
Sebabnya Ia adalah sambungan php-redis versi 2.10 Jika ia terlalu rendah, anda boleh menggunakan sudo apt-get install php5-redis atau memuat turun
https://github.com/phpredis/phpredis
pada gitHub dan memasangnya melalui kompilasi.
apt-get install Versi yang dipasang ialah 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()); } }
Gunakan bahagian kod merah, ia akan melaporkan Ralat 502 , tetapi tiada masalah dengan bahagian kod hijau.
setOption Adakah ini perkara yang pelik? php-redis api telah disemak
$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
Mengapakah ia menjadi salah apabila menggunakan pensirian terbina dalam PHP? Apa yang berlaku?
Kemudian saya memasang sambungan IGBINARY, tetapi ia masih tidak berfungsi. Akhirnya, saya memasang versi terbaharu php-redis 2.24 dan menjalankannya semula, dan tiada masalah sama sekali.
2.24 versi php-redis alamat kod sumber https://github.com/nicolasff/phpredis
= = ==================================
Redis::__pembina bina
$redis = Redis baharu( );
sambung, buka perkhidmatan redis pautan
parameter
hos: rentetan, alamat perkhidmatan
port: int, nombor port
masa tamat: apungan, tempoh pautan (pilihan, lalai ialah 0, tiada had masa pautan)
Nota: Terdapat juga masa dalam redis.conf, lalai ialah 300
pconnect, popen tidak akan menutup pautan secara aktif
merujuk kepada di atas
setOption untuk menetapkan mod redis
getOption untuk melihat mod tetapan redis
ping untuk melihat status sambungan
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah ralat php redis502. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!