Die spezifischen Vorgänge sind wie folgt:
(Empfohlenes Grafik-Tutorial: yii)
1. Konfigurieren Sie den Memcache-Server-Server
1. Laden Sie das Memcached-Softwarepaket herunter, Download-Adresse:
http://pan.baidu.com/s/1boAnghp
Nach dem Login kopieren
Entpacken und memcached . Legen Sie die Exe an einem zufälligen Ort ab, z. B.: d:/memcached/ (ich habe sie in das Bin-Verzeichnis meines Wampservers auf derselben Ebene wie das PHP-Verzeichnis entpackt).
2. Geben Sie mit der Windows+R-Tastenkombination cmd ein, geben Sie den Code in die Befehlszeile ein und wechseln Sie in das Verzeichnis von memcache.exe:
3 Geben Sie den folgenden Code ein, um memcache.exe zu installieren:
memcached.exe -d install
Erweiterung, die zu Ihrer PHP-Version passt
Adresse:
//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 //在运行时修改服务器的参数
Nach dem Login kopieren
2. Kopieren Sie den folgenden Code in php.ini und importieren Sie ihn in yii
1. Wenn Sie das Basis-Framework verwenden: Öffnen Sie config/web.php
Wenn Sie ein erweitertes Framework verwenden: Öffnen Sie config/main.php
Fügen Sie den folgenden Code hinzu:
http://pan.baidu.com/s/1skJnZIl
Nach dem Login kopieren
Jetzt können Sie es im verwenden Aktionsmethode Ihres Controllers wie folgt: Der Code lautet:
extension=php_memcache.dll
Nach dem Login kopieren
Aber wenn Sie die Ablaufzeit verwenden:
'cache' => [
'class' => 'yii\caching\MemCache',
'servers' => [
[
'host' => 'localhost',
'port' => 11211,
'weight' => 100,
],
[
'host' => 'localhost',
'port' => 11211,
'weight' => 50,
],
],
],
Nach dem Login kopieren
, ist dies ein Fehler des Frameworks selbst. Die Lösung lautet wie folgt:
Konfigurieren Sie die Entsprechende Parameter gemäß dem Dokument vor der Verwendung von Memcache in yii2 finden Sie bei der Verwendung von Memcache (nicht zwischengespeichert)
Yii::$app->cache->set('key','value');
Wenn dieser Satz die Gültigkeitszeit nicht in Sekunden festlegt, kann der Wert des Schlüssels im Cache normal abgerufen werden, dies bedeutet jedoch, dass der Schlüssel nicht abläuft.
Wenn die gültige Zeit eingestellt ist,
Yii::$app->cache->set('key','value',60);
Beispielsweise scheint es nach 60 Sekunden so zu sein, dass der dem Schlüssel entsprechende Wert nicht abgerufen werden kann. Nach der Suche im Internet und in Foren habe ich keine Lösung gefunden. Also habe ich mir den zugrunde liegenden Code angesehen. Die referenzierte Memcache-Klasse ist der yiicachingMemCache, der mit Yii2 geliefert wird.
Yii::$app->cache->set('key','value')
Dieser Code ruft automatisch die setValue-Methode unter der Memcache-Klasse auf, um den Cache festzulegen, sodass hier möglicherweise ein Problem auftritt.
Nachdem ich später getestet habe, habe ich den letzten Satz dieser Methode gefunden
return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $expire )
Problem, ändern Sie diesen Code in
return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $duration )
Anschließend testete ich erneut und stellte fest, dass das Problem gelöst war.
Der Grund dafür ist, dass es bei Verwendung von Memcache in diesem Rückgabecode aufgerufen wird
$this->_cache->set($key, $value, 0, $expire)
, äquivalent zu
$mem = new Memcache();$mem->set($key,$value,0,$expire);
Der kritischste Punkt hier ist: Die von Memcache festzulegende Zeit bedeutet, wie viele Sekunden die effektive Zeit beträgt, und die von Memcached festzulegende Zeit bedeutet die Sekunde, in der sie abläuft (entspricht time () + $ duration). Das Problem ist also gefunden. Anschließend wurde das Problem gelöst, indem das zweite $expire im Originalcode in $duration geändert wurde.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den MemCache-Cache korrekt im Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!