Mac OS 의 PHP 환경 에서 MemCache 설정 을 설치 하 는 전 과정 분석
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 가 불 러 왔 는 지 확인 합 니 다.설정
이렇게 하면 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);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PHPStorm 파일의 자동 저장 기능을 끄고 동작을 가볍게 만듭니다.PHPStorm (IntelliJ)의 파일 자동 저장 기능은 데이터 손실을 미연에 방지하기 때문에 편리하지만 Samba 등의 원격 서버의 디렉토리를 마운트하거나 Grunt Watch에서 파일 저장을 트리거로 빌드 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.