ホームページ >PHPフレームワーク >YII >Yii フレームワークで MemCache キャッシュを正しく使用する方法
具体的な操作は次のとおりです:
(推奨グラフィック チュートリアル: yii)
1. memcache サーバーの構成サーバー
1. memcached ソフトウェア パッケージをダウンロードします。ダウンロード アドレス:
http://pan.baidu.com/s/1boAnghp
解凍して、memcached.exe を次のような任意の場所に置きます: d:/memcached/ (私は wampserver に解凍しました) bin ディレクトリは php ディレクトリと同じレベルにあります)。
2. Windows R ショートカット キーを使用して cmd と入力し、コマンド ラインにコードを入力して、memcache.exe のディレクトリに切り替えます:
3. 次のコードを使用して memcache.exe をインストールします: memcached.exe -d install
4.「memcached.exe -d start」と入力して開始
設定成功
//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 バージョンと一致する php_memcache.dll 拡張機能をダウンロードします
アドレス:
http://pan.baidu.com/s/1skJnZIl
2. コピーして php/ext フォルダーに投稿します
3. php.ini に次のコードを追加し、拡張機能をインポートします:
extension=php_memcache.dll
3. yii での設定
1. 基本フレームワークを使用している場合: config/web.php
高度なフレームワークを使用している場合: config/main.php## を開きます
#次のコードを追加します:'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();ただし、有効期限を使用する場合:
Yii::$app->cache->set($key,$value,6);//过期时间为6s 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 秒経過すると、キーに対応する値が取得できないように表示されます。オンラインやフォーラムで検索しましたが、解決策が見つかりません。多くの PHPer が同様の問題に遭遇しています。参照されている memcache クラスは、Yii2 に付属の yii\caching\MemCache です。 Yii::$app->cache->set('key','value') このコードは、memcache クラスの setValue メソッドを自動的に呼び出してキャッシュを設定するため、ここで問題が発生する可能性があります。 後でテストした後、このメソッドの最後の文を見つけました return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $expire ) 問題があるので、このコードを次のように変更します return $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 と同等)。問題が見つかりました その後、元のコードの 2 番目の $expire を $duration に変更することで問題は解決されました。
以上がYii フレームワークで MemCache キャッシュを正しく使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。