Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah ralat php redis502

Bagaimana untuk menyelesaikan masalah ralat php redis502

藏色散人
藏色散人asal
2022-01-28 10:03:552235semak imbas

Penyelesaian kepada ralat php redis502: 1. Gunakan "sudo apt-get install php5-redis" atau muat turun phpredis pada gitHub 2. Susun semula dan pasang.

Bagaimana untuk menyelesaikan masalah ralat php redis502

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn