Mac OS 의 PHP 환경 에서 MemCache 설정 을 설치 하 는 전 과정 분석

3651 단어 MemCachePHP
서버 설치
memcache 는 프로젝트 이름 이 고 서버 에 있 는 상주 프로 세 스 는 memcached(Liux 의 데 몬 은 보통 뒤에 d 를 추가 합 니 다)입 니 다.OSX 에서 brew 를 사용 하면 memcache 를 빠르게 설치 할 수 있 습 니 다.

$ sudo brew install memcached
memcache 의존:openssl 과 libevent 는 자동 으로 다운로드 하고 설치 합 니 다.
설치 완료 후 다음 명령 으로 시작 합 니 다:

$ sudo memcached -m 32 -p 11211 -d
php 확장 설치
php 를 사용 하여 memcache 를 조작 하기 전에 php 의 확장 을 설치 해 야 합 니 다.php 의 확장 은 memcache 와 memcached 를 선택 할 수 있 습 니 다.여 기 는 비교적 전형 적 인 전 자 를 설치 합 니 다.여기에서 원본 압축 패 키 지 를 다운로드 하고 압축 을 풀 고 원본 디 렉 터 리 에 들 어가 서 실행 합 니 다.

$ sudo phpize
phpize 는 컴 파일 된 php 외 에 php 확장 용 스 크 립 트 를 컴 파일 하여 configure,make 등 파일 을 만 드 는 데 도움 을 줍 니 다.때때로 이 명령 을 실행 하면 오류 가 발생 할 수 있 습 니 다.

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
의존 이 부족 하면 설치 하 시 겠 습 니까?아니면 brew 를 사용 하 시 겠 습 니까?
$ sudo brew install autoconf
phpize 가 완 료 된 후 다음 명령 을 순서대로 실행 하여 컴 파일 과 설 치 를 실현 합 니 다.

$ sudo ./configure
$ sudo make
$ sudo make install
컴 파일 된 memcache.so 는 일반적으로 다음 디 렉 터 리 에 설치 되 어 있 습 니 다.

Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-xxxxxx/
이렇게 하면 php.ini 에서 이 확장 자 를 설정 할 수 있 습 니 다:

extension=/usr/lib/php/extensions/no-debug-non-zts-xxxxxx/memcache.so

phpinfo()페이지 를 열 고 memcache 가 불 러 왔 는 지 확인 합 니 다.
2016215145706052.jpg (638×345)
설정
이렇게 하면 phop 에서 memcache 를 직접 사용 할 수 있 습 니 다.여 기 는 피곤 하지 않 습 니 다.yii 에서 사용 하려 면 구성 요 소 를 추가 해 야 합 니 다.

'components'=>array(

  'cache'=>array(
    'class'=>'CMemCache',
    'servers'=>array(
      array(
        'host'=>'127.0.0.1',
        'port'=>11211
      )
    ),
  ),
...

더 많은 yii 설정 에 대해 서 는 문 서 를 참조 하 십시오.마지막 으로 yii 에서 memcache 를 사용 합 니 다:

Yii::app()->cache->set('key1','value1');
Yii::app()->cache->get('key1');

memcached 사용 예시
순수 하 게 데이터 베 이 스 를 사용 하여 조회 하 는 코드 에 memcached 지원 을 추가 하 는 것 은 매우 간단 합 니 다.이것 이 원래 의 코드 라 고 가정 합 니 다.

function get_foo (int userid) {
  result = db_select("SELECT * FROM users WHERE userid = ?", userid);
  return result;
}
memcached 의 캐 시 메커니즘 을 추가 한 후:

function get_foo (int userid) {
  result = memcached_fetch("userrow:" + userid);
  if (!result) {
    result = db_select("SELECT * FROM users WHERE userid = ?", userid);
    memcached_add("userrow:" + userid, result);
  }
  return result;
}
상기 프로그램 은 먼저 memcached 에 가서 userrow:userid 의 데이터 가 있 는 지 확인 하고 있 으 면 결 과 를 직접 전송 합 니 다.존재 하지 않 을 때 데이터 베 이 스 를 조회 하고 결 과 를 memcached 에 넣 습 니 다.
memcached 에 캐 시 정보 가 있 을 때 데이터 베 이 스 를 업데이트 하면 상기 프로그램 은 오래된 데 이 터 를 잡 을 수 있 습 니 다.이것 은 Cache coherency 에 속 하 는 문제 입 니 다.그 중 하 나 는 데이터 베 이 스 를 업데이트 할 때 memcached 의 정 보 를 업데이트 하 는 것 입 니 다.

function update_foo(int userid, string dbUpdateString) {
  result = db_execute(dbUpdateString);
  if (result) {
    data = createUserDataFromDBString(dbUpdateString);
    memcached_set("userrow:"+userid, data);
  }
}

좋은 웹페이지 즐겨찾기