PHP & memcached
쇼 리 다 (KrazyNio AT hotmail. com), 2006.004. 06, 전재 출처 를 밝 혀 주 십시오.
1. memcached 안내
많은 경우 에 우 리 는 memcached 라 는 이름 을 들 을 수 있 지만 많은 친구 들 이 들 어 본 적 이 있 을 뿐 사용 해 본 적 이 없 거나 실제 적 으로 알 아 본 적 이 없고 좋 은 물건 이라는 것 만 알 고 있다.여기 서 간단하게 소개 하 겠 습 니 다. memcached 는 효율 적 이 고 빠 른 분포 식 메모리 대상 캐 시 시스템 으로 주로 WEB 동적 응용 프로그램 을 가속 화 하 는 데 사 용 됩 니 다.
2. memcached 설치
먼저 memcached 를 다운로드 하 였 습 니 다. 현재 최신 버 전 은 1.1.12 입 니 다. 공식 사이트 에서 memcached - 1.1.2. tar. gz 를 직접 다운로드 할 수 있 습 니 다.그 밖 에 memcached 는 libevent 를 사 용 했 습 니 다. 제 가 다운로드 한 것 은 libevent - 1.1a. tar. gz 입 니 다.
다음은 libevent - 1.1a. tar. gz 와 memcached - 1.1.2. tar. gz 를 각각 가방 을 풀 고 컴 파일 하 며 설치 합 니 다.
# tar -xzf libevent-1.1a.tar.gz
# cd libevent-1.1a
# ./configure --prefix=/usr
# make
# make install
# cd ..
# tar -xzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# ./configure --prefix=/usr
# make
# make install
설치 가 완료 되면 memcached 는 / usr / bin / memcached 에 있어 야 합 니 다.
3. memcached 데 몬 실행
memcached 데 몬 을 실행 하 는 것 은 간단 합 니 다. 명령 행 하나만 있 으 면 됩 니 다. 설정 파일 을 수정 할 필요 가 없습니다. (설정 파일 도 수정 하지 않 았 습 니 다)
/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd
매개 변수 설명:
-d (daemon) memcached;
-m memcached , M;
-l IP , , ;
-p , 11211, ;
-u , root , 。
물론 다른 매개 변 수 를 사용 할 수 있 습 니 다.
man memcached
한 번 에 볼 수 있 습 니 다.4. memcached 의 작업 원리
먼저 memcached 는 데 몬 방식 으로 하나 이상 의 서버 에서 실 행 됩 니 다. 클 라 이언 트 의 연결 작업 을 수시로 받 습 니 다. 클 라 이언 트 는 다양한 언어 로 작 성 될 수 있 습 니 다. 현재 알려 진 클 라 이언 트 API 는 Perl / PHP / python / Ruby / 자바 / C \ # / C 등 을 포함 합 니 다.PHP 등 클 라 이언 트 가 memcached 서비스 와 연결 한 후에 다음 일 은 액세스 대상 입 니 다. 액세스 대상 마다 유일한 식별 자 key 가 있 습 니 다. 액세스 작업 은 모두 이 key 를 통 해 이 루어 집 니 다. memcached 에 저 장 된 대상 은 실제 메모리 에 저 장 된 것 이지 cache 파일 에 저 장 된 것 이 아 닙 니 다.이것 도 memcached 가 이렇게 효율 적 이 고 빠 른 이유 이다.이 대상 들 은 오래 지속 되 지 않 습 니 다. 서비스 가 멈 추 면 안의 데 이 터 를 잃 어 버 립 니 다.
3. PHP 는 memcached 클 라 이언 트 로 어떻게 사용 합 니까?
PHP 를 memcached 클 라 이언 트 로 하고 memcached 서 비 스 를 호출 하여 대상 액세스 작업 을 할 수 있 는 두 가지 방법 이 있 습 니 다.
첫 번 째, PHP 는 memcache 라 는 확장 이 있 습 니 다. Linux 에서 컴 파일 할 때 – enable - memcache [= DIR] 옵션 을 가 져 가 야 합 니 다. Window 아래 에 서 는 phop. ini 에서 phop 을 제거 합 니 다.memcache. dll 앞 에 있 는 주석 부 호 를 사용 할 수 있 도록 합 니 다.
그 밖 에 확장, 재 컴 파일 로 인 한 번 거 로 움 을 피 할 수 있 는 방법 도 있 습 니 다. 그것 은 바로 phop - memcached - client 를 직접 사용 하 는 것 입 니 다.
본 고 는 두 번 째 방식 을 선택 하여 확장 라 이브 러 리 보다 효율 이 약간 떨 어 지지 만 문제 가 크 지 않다.
4. PHP memcached 응용 예제
먼저 memcached - client. php 를 다운로드 하고 memcached - client. php 를 다운로드 한 후 이 파일 의 클래스 'memcached' 를 통 해 memcached 서 비 스 를 조작 할 수 있 습 니 다.사실 코드 호출 은 매우 간단 합 니 다. 주로 사용 하 는 방법 은 add (), get (), replace () 와 delete () 가 있 습 니 다. 방법 은 다음 과 같 습 니 다.
add ($key, $val, $exp = 0)
memcached 에 대상 을 기록 합 니 다. $key 는 대상 의 유일한 식별 자 입 니 다. $val 은 기록 한 대상 데이터 입 니 다. $exp 는 만 료 시간 이 고 단 위 는 초 이 며 기본 값 은 시간 제한 이 없습니다.get ($key)
memcached 에서 대상 데 이 터 를 가 져 오고 대상 의 유일한 식별 자 $key 를 통 해 가 져 옵 니 다.replace ($key, $value, $exp=0)
memcached 에 있 는 식별 자 를 $key 의 대상 내용 으로 $value 로 교체 합 니 다. 매개 변 수 는 add () 방법 과 마찬가지 로 $key 대상 이 존재 하 는 경우 에 만 작 동 합 니 다.delete ($key, $time = 0)
memcached 에 있 는 식별 자가 $key 인 대상 을 삭제 하고 $time 은 선택 가능 한 매개 변수 로 삭제 하기 전에 얼마나 기 다 려 야 하 는 지 표시 합 니 다.다음은 간단 한 테스트 코드 입 니 다. 코드 에서 식별 자가 'my key' 인 대상 데 이 터 를 액세스 합 니 다.
<pre> <?php // memcached require_once('memcached-client.php'); // $options = array( 'servers' => array('192.168.1.1:11211'), //memcached 、 , memcached 'debug' => true, // debug 'compress_threshold' => 10240, // 'persistant' => false // ); // memcached $mc = new memcached($options); // $key = 'mykey'; // memcached $mc->add($key, 'some random strings'); $val = $mc->get($key); echo "n'.str_pad('$mc->add() ', 60, '_')."n'; var_dump($val); // $mc->replace($key, array('some'=>'haha', 'array'=>'xxx')); $val = $mc->get($key); echo "n'.str_pad('$mc->replace() ', 60, '_')."n'; var_dump($val); // memcached $mc->delete($key); $val = $mc->get($key); echo "n'.str_pad('$mc->delete() ', 60, '_')."n'; var_dump($val); ?> </pre>
간단 하지 않 습 니까? 실제 응용 에 서 는 데이터 베 이 스 를 조회 한 결과 집 을 memcached 에 저장 합 니 다. 다음 에 방문 할 때 memcached 에서 직접 얻 고 데이터 베 이 스 를 조회 하지 않 습 니 다. 그러면 데이터 베이스 의 부담 을 어느 정도 줄 일 수 있 습 니 다.보통 SQL 구문 md5 () 이후 의 값 을 유일한 식별 자 key 로 합 니 다.다음은 memcached 를 이용 하여 데이터베이스 조회 결과 집합 을 캐 시 하 는 예제 입 니 다.
<?php $sql = 'SELECT * FROM users'; $key = md5($sql); //memcached if ( !($datas = $mc->get($key)) ) { // memcached , 。 echo "n'.str_pad('Read datas from MySQL.', 60, '_')."n'; $conn = mysql_connect('localhost', 'test', 'test'); mysql_select_db('test'); $result = mysql_query($sql); while ($row = mysql_fetch_object($result)) $datas[] = $row; // memcached , 。 $mc->add($key, $datas); } else { echo "n'.str_pad('Read datas from memcached.', 60, '_')."n'; } var_dump($datas); ?>
이 를 통 해 알 수 있 듯 이 memcached 를 사용 한 후에 데이터 베이스 연결, 조회 작업 을 줄 일 수 있 고 데이터 베이스 가 부하 되 어 스 크 립 트 의 운행 속도 도 향상 되 었 다.
이전에 저 는 라 는 글 을 쓴 적 이 있 습 니 다. 글 에서 SESSION 은 데이터 베 이 스 를 사용 하여 저 장 된 것 입 니 다. 동시 방 문 량 이 많 을 때 서버 의 부하 가 매우 크 고 MySQL 의 최대 연결 수 를 초과 할 수 있 습 니 다. memcached 를 이용 하면 우 리 는 이 문 제 를 잘 해결 할 수 있 습 니 다. 작업 원 리 는 다음 과 같 습 니 다.
관련 자원
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.