>  기사  >  PHP 프레임워크  >  Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법

Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법

王林
王林앞으로
2020-11-18 15:29:392370검색

Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법

구체적인 작업은 다음과 같습니다.

(권장 그래픽 튜토리얼: yii)

1. memcached 서버 서버 구성

1. 다운로드 주소:

http://pan.baidu.com/s/1boAnghp

Unzip 및 memcached .exe를 d:/memcached/와 같은 임의의 위치에 넣습니다(php 디렉토리와 동일한 레벨에 있는 wampserver의 bin 디렉토리에 압축을 풀었습니다).

2 windows+R 단축키를 사용하여 cmd를 입력하고 명령줄에 코드를 입력한 후 memcache.exe 디렉터리로 전환합니다.

Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법

3 다음 코드를 입력하여 memcache.exe를 설치합니다. memcached.exe -d install

Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법

4. 시작하려면 memcached.exe -d start를 입력하세요.

Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법

구성 성공

//memcache常用的函数:
Memcache::add   //添加一个值,如果已经存在,则返回false
Memcache::addServer  // 添加一个可供使用的服务器地址
Memcache::close   //关闭一个Memcache对象
Memcache::connect  // 创建一个Memcache对象
memcache_debug  // 控制调试功能
Memcache::decrement  // 对保存的某个key中的值进行减法操作
Memcache::delete   //删除一个key值
Memcache::flush  // 清除所有缓存的数据
Memcache::get   //获取一个key值
Memcache::getExtendedStats   //获取进程池中所有进程的运行系统统计
Memcache::getServerStatus// 获取运行服务器的参数
Memcache::getStats   //返回服务器的一些运行统计信息
Memcache::getVersion   //返回运行的Memcache的版本信息
Memcache::increment   //对保存的某个key中的值进行加法操作
Memcache::pconnect  // 创建一个Memcache的持久连接对象
Memcache::replace   //对一个已有的key进行覆写操作
Memcache::set   //添加一个值,如果已经存在,则覆写
Memcache::setCompressThreshold   //对大于某一大小的数据进行压缩
Memcache::setServerParams   //在运行时修改服务器的参数

2. php_memcache.dll 확장 설치

1. 먼저 php_memcache.dll 확장을 다운로드하세요. php 버전과 일치합니다

주소:

http://pan.baidu.com/s/1skJnZIl

2. php/ext 폴더에 복사하여 게시하세요

3. php.ini에 다음 코드를 추가하고 yii

에 구성을 가져옵니다.

1. 기본 프레임워크를 사용하는 경우: config/web.php를 엽니다

고급 프레임워크를 사용하는 경우: config/main.php를 엽니다.

다음 코드를 추가합니다.

extension=php_memcache.dll

이제 액션에서 사용할 수 있습니다. 코드는 다음과 같습니다.

'cache' => [
    'class' => 'yii\caching\MemCache',
    'servers' => [
        [
            'host' => 'localhost',
            'port' => 11211,
            'weight' => 100,
        ],
        [
            'host' => 'localhost',
            'port' => 11211,
            'weight' => 50,
        ],
    ],
],
//缓存MemCache
 
$key='key';
$value='this is the value';
<pre name="code" class="php">Yii::$app->cache->set($key,$value);
echo "lixian";
echo Yii::$app->cache->get($key);
exit();

그러나 만료 시간을 사용하면


를 출력할 수 없습니다. 이는 프레임워크 자체의 버그입니다. 해결 방법은 다음과 같습니다.

해당 항목을 구성합니다. yii2에서 memcache를 사용하기 전 문서에 따른 매개변수는 memcache(비-memcached) 사용 중에 확인할 수 있습니다. Yii::$app->cache->set('key','value'); 이 문장에서 유효 시간을 초 단위로 설정하지 않으면 캐시에 있는 키 값을 정상적으로 얻을 수 있지만 키가 만료되지 않는다는 의미입니다.

유효시간이 설정되면, Yii::$app->cache->set('key','value',60); 예를 들어, 60초 후에는 키에 해당하는 값을 얻을 수 없는 것으로 나타납니다. 온라인과 포럼에서 검색한 후에도 많은 PHP 사용자가 비슷한 문제를 겪었습니다. 그래서 참조된 memcache 클래스는 Yii2와 함께 제공되는 yiicachingMemCache입니다. Yii::$app->캐시->set('키','값') 이 코드는 memcache 클래스 아래의 setValue 메서드를 자동으로 호출하여 캐시를 설정하므로 여기서 문제가 발생할 수 있습니다.

나중에 테스트한 결과 이 ​​방법의 마지막 문장을 발견했습니다. $this->useMemcached 반환 ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $expire ) 문제가 발생하면 이 코드를 다음으로 변경하세요. $this->useMemcached 반환 ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $duration ) 그 후 다시 테스트를 해보니 문제가 해결된 것으로 나타났습니다.

이 반환 코드에서 memcache를 사용할 때 호출되기 때문입니다. $this->_cache->set($key, $value, 0, $expire) , 에 해당 $mem = new Memcache();$mem->set($key,$value,0,$expire); 여기서 가장 중요한 점은 memcache가 설정하는 시간은 유효 시간이 몇 초인지를 의미하고 memcached가 설정하는 시간은 만료되는 초를 의미한다는 것입니다(time()+$duration과 동일). 그래서 문제가 발견되었습니다. 그 후 원본 코드의 두 번째 $expire를 $duration으로 변경하여 문제를 해결했습니다.

위 내용은 Yii 프레임워크에서 MemCache 캐시를 올바르게 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제