2011-05-03 4 views
-1

DB 테이블 이름으로 쿼리를 캐시 할 수있는 DB 캐싱 시스템을 찾고 있습니다. 현재 CI 1.7.2 및 DB 용 mySQL을 사용하고 있습니다.DB 테이블로 쿼리를 캐시하는 CodeIgnitor에서 DB 캐싱 시스템을 찾고 있습니다.

CI에 내장 된 DB 캐싱 시스템이 있다는 것을 알고 있지만 문제는 컨트롤러/메소드 이름별 쿼리를 캐시한다는 것입니다. 나는 온라인 소프트웨어를 가지고 있으며 하루에 큰 타격을 기대하고있다. 그래서 컨트롤러/메소드 네이밍에 의존 할 수 없습니다. 왜냐하면 쿼리가 업데이트 될 때 Controller/Method 네이밍에 의한 쿼리 관련 캐시를 삭제할 수 없기 때문입니다. 또한 캐싱 시스템을 사용할 필요가 없으므로 모든 캐시를 삭제할 수 없습니다.

이 문제에 대해 도와주세요. 그것이 거의 불가능하다면 내 목적을 달성하기위한 다른 최선의 방법을 제안하십시오.

미리 감사드립니다. 당신이 memcached를 서버와 잘 경우

답변

0

당신은 MP_Cache를 사용할 수있는 또 다른 옵션입니다 I 강하게 믿는다. 다음은 MP_Cache의 User Guide입니다. CodeIgniter와 호환되며 라이브러리에서도 모델을 캐시 할 수 있으며 캐시 이름은 직접 설정할 수 있습니다.

+0

그레이트 !!! 그것이 내가 찾고 있었던 것이다. 도와 주셔서 감사합니다. – Tareq

0
+0

CodeIgniter와 웹 서버에 이러한 캐싱 시스템을 설치하고 사용하는 방법을 설명해주십시오. – Tareq

+0

내 대답에 memcache 링크를 확인하십시오. 그것은 아주 좋은 문서를 가지고 있습니다. 빠른 자습서는 http://blogs.vinuthomas.com/2006/02/06/memcached-with-php/에서도 볼 수 있습니다. – anubhava

+0

유감스럽게 생각하지만, 내 로컬 버전의 아파치 서버가 아닌 웹 서버에 memcache를 설치하는 방법과 CodeIgniter와 함께 사용하는 방법에 대한 유용한 정보를 찾지 못했습니다. 프로젝트에서 사용했다면 단계별로 설명하십시오. – Tareq

2

또 다른 옵션 - 그리고 CI에서 캐싱을하기 전에 일반적으로 시도해야한다고 생각되는 것 중 하나는 MySQL에서 쿼리 캐싱입니다.

은 /etc/my.cnf에 (또는 특정 위치)의 [mysqld] 섹션에 다음을 추가하고 mysqld를 다시 시작 : 캐시 크기, 기본적으로 쿼리 캐싱을 사용합니다
query_cache_type=1 
query_cache_size = 20M 

20 Megs로 조정할 수 있습니다. 당신이 더 컨트롤러 실행 시간을 단축해야하는 경우

$this->output->enable_profiler(TRUE); 

, 나는 추천 할 수있는 솔루션을 찾고 : (각 쿼리의 두 번째 실행에) 결과 쿼리 시간을 확인하려면 컨트롤러의 CI 출력 프로파일 사용 이미 권장 된 MP_Cache 또는 APC와 유사합니다.

+0

제안 해 주셔서 감사합니다. 나는 라이브 웹 서버에 이러한 라인을 추가하는 방법에 대해 혼란 스럽다. 여기에서 서버에 대한 통제력은 제한적이며 ** my.cnf ** 파일을 편집 할 권한을 가질 수 없다. – Tareq