>  기사  >  백엔드 개발  >  PHP는 Memcache의 싱글톤 모드를 작동하고 메커니즘을 테스트합니다.

PHP는 Memcache의 싱글톤 모드를 작동하고 메커니즘을 테스트합니다.

WBOY
WBOY원래의
2016-07-29 09:08:511636검색

class MemcacheOpr은 Memcached를 확장합니다
{

private static $instance = null;
private static $host = '127.0.0.1';
private static $port = 11211;
공개 정적 함수 getInstance()
{
if (!(self::$instance instanceof Memcached)) {
self::$instance = new Memcached();
self ::$instance->addServer(self::$host, self::$port);
    }
        return self::$instance;
  }
}
ini_set(' memory_limit','1024M'); //현재 페이지에서 사용하는 최대 메모리는 기본적으로 128M입니다. 이를 초과하는 경우 재설정해야 합니다.
ini_set('max_execution_time',60); /php 페이지의 최대 실행 시간, 기본값은 30초입니다. 초과하는 경우 재설정해야 합니다.
$mcache = MemcacheOpr::getInstance();//싱글톤 모드 호출
$mcache- >flush(); 🎜>$mcache->delete('string1m');
$mcache->delete('string2m');
$mcache->delete('string3m');
$mcache- >delete('string4m');
$mcache->delete('string5m');
for($i=0;$i $mcache ->delete('string'.$i);
}
/*$mcache->set('somewords','뭔가 배웠나요?');
$output = $ mcache->get('somewords');
echo "output=[$output]
";*/
$begintime = microtime(TRUE);
$input = str_repeat('무엇',1024*1024*16*2*1.5); //192M
$input = substr($input,0,-512);
$mcache-> set('string1m', $input);//192M 192M에 저장된 5개의 콘텐츠가 왜 성공할 수 있을까요? Memcached가 메모리
$mcache->set('string2m',$input.'areyou2');
$mcache->set('string3m',$input . 'areyou3');
$mcache->set('string4m',$input.'areyou4');
$mcache->set('string5m',$input.'areyou5')
/*for($i=0;$i $mcache->set('string'.$i, $input);
}*/
$input = str_repeat('what',1048576); //여기에는 실제로 4M의 내용이 저장됩니다. memcached가 압축을 켜기 때문에 실제 저장되는 내용이 매우 작더라도 문제가 없습니다.
for($i=0;$i $mcache->set('string'.$i,$input);
}
$ mcache->delete('somewords');
$during = microtime(TRUE) - $begintime;
echo '총 시간:'.$during.'s
';
file_put_contents('/tmp/string5m.log',$mcache->get('string1m'));
//echo '$output의 길이:'.strlen($output).",output=[ $output]
";
/*$allKeys = $mcache->getAllKeys();
var_dump($allKeys);

print_r($mcache-> getStats());*/

PHP는 Memcache의 싱글톤 모드를 작동하고 메커니즘을 테스트합니다.

사실 phpinfo()에서 memcached가 2000바이트를 초과하는 콘텐츠에 대해 압축을 활성화한다는 것을 알 수 있습니다.

PHP 배열의 경우 memcache가 직렬화되므로 저장된 콘텐츠 길이가 실제 콘텐츠 길이와 다를 수 있습니다.

서버의 Memcache 사용 현황을 보고 싶다면 telnet 127.0.0.1 11211 명령어를 통해 확인할 수 있습니다.

실제 저장된 값 가져오기: get string1m

stats 명령을 사용하여 메모리 적중 상태와 같은 일부 상태를 표시합니다


통계 슬래브를 사용하여 다양한 슬래브 블록의 실제 상황을 표시합니다

실제로 각 페이지는 (페이지)는 기본적으로 1m의 콘텐츠를 저장합니다. 그러면 1m 콘텐츠는 청크 크기에 따라 여러 개의 블록으로 분할될 수 있습니다.

저장된 콘텐츠의 길이가 동일할 경우 동일한 크기의 블록이 일반적으로 사용되며 길이가 1.25 배를 초과합니다. (기본값 배수 증가 시) 새로운 슬래브 블록이 활성화됩니다.

증분 배수가 클수록 메모리 낭비가 커집니다. 8k 슬라브 블록을 모두 사용하고 8k 데이터를 계속 저장하려는 경우 기본적으로 10k 데이터가 사용됩니다. 사실 2k의 메모리 데이터가 낭비되었습니다.

증가 배수가 2이면 8k의 메모리가 낭비됩니다.


위 내용은 Memcache를 운영하는 PHP의 싱글톤 모드와 관련 측면을 포함하여 그 메커니즘을 테스트하는 내용을 소개하며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.