>  기사  >  백엔드 개발  >  PHP redis502 오류 문제를 해결하는 방법

PHP redis502 오류 문제를 해결하는 방법

藏色散人
藏色散人원래의
2022-01-28 10:03:552236검색

php redis502 오류 해결 방법: 1. "sudo apt-get install php5-redis"를 사용하거나 gitHub에서 phpredis를 다운로드합니다. 2. 다시 컴파일하고 설치합니다.

PHP redis502 오류 문제를 해결하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 5.5.30, DELL G3 컴퓨터

php redis502 오류 문제를 해결하는 방법은 무엇입니까?

php redis 설정으로 문제가 해결될 때 nginx 502

PHP Version 5.5.30-1+deb.sury.org~trusty+1
redis 3.0.1,

pr.tar를 다운로드하면 gz 버전 2.10에서 설치되는 php-redis 확장 프로그램을 사용할 수 있습니다.

$redis->set('test', 'hello world')를 실행하고 nginx 502 오류를 보고합니다(nginx 502 오류는 정말 골치 아픈 문제입니다).

문제는 $this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);

이유는 php-redis 확장 버전 2.10이 너무 낮기 때문입니다. sudo apt-get install php5-redis를 사용하거나 gitHub에서

https://github.com/phpredis/phpredis

를 다운로드하고 컴파일하여 설치할 수 있습니다.

apt-get install 설치된 버전은 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());
        }
    }

빨간색 코드 부분을 사용하면 502에러가 발생하지만 녹색 코드 부분을 사용하면 문제가 없습니다. .

setOption 이게 이상한건가요? php-redis api를 확인했습니다

$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

PHP에 내장된 직렬화를 사용할 때 왜 문제가 발생합니까? 무슨 일이에요?

나중에 IGBINARY 확장 프로그램을 설치했지만 여전히 작동하지 않았습니다. 마지막으로 php-redis 최신버전 2.24를 설치하고 다시 실행해 보았는데 전혀 문제가 없었습니다.

2.24 버전 php-redis 소스코드 주소 https://github.com/nicolasff/phpredis

==================== ===

Redis::__construct constructor

$redis = new Redis();

connect, 오픈 링크 redis service

parameters

host: 문자열, 서비스 주소

port: int, 포트 번호

timeout : 부동, 링크 기간(선택 사항, 기본값은 0, 링크 시간 제한 없음)

참고: redis.conf에도 시간이 있으며 기본값은 300

pconnect, 적극적으로 닫히지 않는 링크를 엽니다

위 내용을 참고하세요

setOption은 redis 모드를 설정합니다

getOption redis가 설정한 모드 보기

ping 연결 상태 보기

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP redis502 오류 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.