그누보드5(영카트5)용 redis 쿼리 캐시 플러그인 > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 다양한 기능을 추가하기 쉽습니다.

그누보드5(영카트5)용 redis 쿼리 캐시 플러그인 정보

그누보드5(영카트5)용 redis 쿼리 캐시 플러그인

첨부파일

redis_cache.zip (4.1K) 85회 다운로드 2017-11-10 17:04:48 포인트 차감1,000

본문

- redis 서비스를 이용하여 db 쿼리 캐시 플러그인입니다.

- 접속자가 많은 사이트나, 복잡한 쿼리를 많이 사용하는 사이트에서 성능을 향상시킬수 있는 솔루션입니다.

- 간단한 함수 사용만으로 사용할수 있습니다. 

 

1. 사전 내용

 - PHP 5.3 이상에서 테스트되었습니다. 5.2 이하 버전에선 오동작할수 있습니다.
 - 서버에 phpredis 가 설치되어 있어야 합니다. 
 - phpredis 설치방법은  http://blog.bongwork.com/archives/44 를 참조하세요.
 - common.php 파일에 redis 객체를 미리 생성하면, 접속시마다 생성하지 않음으로, 네트웍 리소스를 절약할수 있습니다.
   예제 
 try {
    $redis = new Redis();
    $redis->connect(REDIS_SERVER_IP, REDIS_SERVER_PORT, 5);
} catch( Exception $e) {
    echo $e->getMessage();
}

2. 디렉토리 구성 및 파일
 - /lib/RedisCache.class.php 메인 캐시용 클래스 
 - /extend/redis_cache_functions.php   쿼리 캐시 함수용 선언 함수파일
 - /redis_test.php  : 테스트용 php 파일
 - /README.txt

3. 설정방법
 - redis 서버가 로컬(127.0.0.1) 이 아닌 다른 서버에서 실행되는 경우 RedisCache.class.php 의 default_host와 default_port를 해당 서버정보로 변경해주세요.
 (보통 사용하지 않으나,  redis 서버의 auth 기능을 사용하고 있는 경우는 접속 코드에 auth 관련 코드를 추가해야 합니다.)

4. 사용방법
  - 압축을 푼 다음 RedisCache.class.php 와 redis_cache_functions.php 파일을 그누보드5(영카트5)의 lib와 extend 디렉토리로 업로드 합니다   - 첨부된 redis_test.php 를 작성하여 실행해봅니다. (관리자로 실행하면 디버깅 정보가 노출됩니다. 성능 확인가능)

5. 라이센스
  - GPL 을 따릅니다. 개인사이트 상업사이트에서 사용가능합니다.
  - 본인외에 타사이트에 위 소스를 게재할경우 사전 동의가 필요합니다.
  - 본 코드를 첨부한 솔루션을 판매하는 경우  따로 연락바랍니다.


 

추천
9

댓글 전체

다운받아서 redis 는 서버에 설치했고 정보도 확인했습니다만...
redis-test.php 실행시키면 흰색 화면만 나오는군요
다르게 쿼리 실행시켜봐도 흰색 화면... 뭐가 문제일지 ㅠ_ㅠ
관리자로 로그인후에 실행하셔도 동일한가요? 뭔가 오류 메세지가 나올것 같은데요..
혹시 common.php 의 session.save_path를 수정 하셨나요? 만약 redis 를 session.save_path 에서 사용 안하실거면, php.ini 에서 session 관련 설정은 빼셔야 합니다.
네 관리자로 로그인해도 아무런 메세지가 나오지를 않네요

session.save_path 부분 2줄은 제외하고 php.ini 에
extension=/usr/lip64/php/modules/redis.so 만 입력했습니다.
파일 경로는 맞습니다 ^^;

에러라도 뜨면 뭔가 확인이라도 해볼텐데 아무런 메세지 없는
빈페이지만 뜨네요 소스보기해도 아무것도 없고...
하얀색이 나왔다면, 오류가 났을것 같네요.
일단 코드를 조금 수정하여 오류를 확인해봐야 할것 같습니다.

/lib/RedisCache.class.php 에 해당 코드 부분에
echo $e->getMessage(); 코르를 추가해주세요.

try {
                $this->add_debug_info("[" . __METHOD__ . "()] redis 서비스에 접속합니다.");
               
                $redis = new Redis();
                $redis->connect($this->default_host, $this->default_port, 5);
                $this->data_store = $redis;
                $this->use_redis = true;
            } catch (Exception $e) {
                echo $e->getMessage();
                $this->use_redis = false;
                $this->add_debug_info("[" . __METHOD__ . "()] ".$e->getMessage(). " redis 서버에 접속할수 없습니다.");
            }
- common.php 파일에 redis 객체를 미리 생성하면, 접속시마다 생성하지 않음으로, 네트웍 리소스를 절약할수 있습니다.
  예제
 try {
    $redis = new Redis();
    $redis->connect(REDIS_SERVER_IP, REDIS_SERVER_PORT, 5);
} catch( Exception $e) {
    echo $e->getMessage();
}
이부분을 어디쯤 넣어야 할까요?
안녕하세요,

이걸 이용해서 그누보드 리스트와 댓글, 새글등 쿼리 돌만한 부분들 Hook걸어 만들고 있습니다. 글 수정과 삭제 부분만 잘 짜면 제가 생각하는 형태가 될 것 같은데 머리가 안돌아가네요..

정말 많은 도움이 되었습니다. 감사합니다.

명랑폐인님

redis를 이용해서 같은 DB를 사용하고 있고 그누를 아래와 같이 2개를 설치하고 로그인 세션공유도 할 수 있는 건가요?

1)도메인/ 에 그누설치

2)도메인/sub/ 에 그누설치

dbconfig.php에서 회원부분 공유를 해주면 각각은 로그인이 되는데, 서로 세션공유는 되지 않더라구요. 

( common.php에서 session_save_path를 같게 한다던지, data/session 폴더 심볼릭링크를 한다던지 등 방법을 사용했지만 세션공유는 되지 않더라구요. )

 

redis관련 세션공유 검색을 해도 비슷한 자료도 찾을 수가 없었습니다. 혹시 redis를 이용해서 그누 2개 설치시 로그인 세션공유를 할 수 있는 팁이라도 말씀해주시면 공부를 더 해보겠습니다.

전체 502
그누보드5 플러그인 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT