99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

Yii框架使用MemCache緩存的示例

這篇文章將為大家詳細講解有關Yii框架使用MemCache緩存的示例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

我們提供的服務有:網站設計制作、網站設計、微信公眾號開發、網站優化、網站認證、汾西ssl等。為成百上千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的汾西網站制作公司

具體操作如下所示:

一、配置memcache server 服務器

1、下載memcached軟件包,下載地址:

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

解壓,把memcached.exe放到隨意一個地方,比如:d:/memcached/下(我解壓到了我的wampserver的bin目錄下與php目錄同級)。

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   //在運行時修改服務器的參數

二、安裝php_memcache.dll擴展

1、首先下載符合你的php版本的php_memcache.dll擴展

地址:

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

2、復制張貼在你的php/ext文件夾里

3、在php.ini里面添加如下代碼,導入擴展:

extension=php_memcache.dll

三、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,
        ],
    ],
],

現在就可以在你的控制器的action方法中使用如下代碼了:

//緩存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();
</pre><pre>

但是當你使用過期時間時即:

Yii::$app->cache->set($key,$value,6);//過期時間為6s
echo "lixian";
echo Yii::$app->cache->get($key);
exit();

就輸出不了了,這是該框架自身的一個bug,解決辦法如下:

在yii2使用memcache前根據文檔配置好相應的參數,在使用memcache(非memcached)過程中會發現 Yii::$app->cache->set('key','value'); 當這句話沒有設置有效時間為多少秒時,可以正常獲取到緩存中鍵為key的值,但表示此key不過期。

當設置了有效時間時, Yii::$app->cache->set('key','value',60); 比如60秒,就會出現取不到key對應的value值,網上和論壇里搜了搜,沒有找到解決辦法,也有很多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) 后,再測試發現問題已經解決。

原因則是這句return代碼里使用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緩存的示例就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

名稱欄目:Yii框架使用MemCache緩存的示例
本文路徑:http://www.yijiale78.com/article2/ghcdoc.html

成都網站建設公司_創新互聯,為您提供營銷型網站建設關鍵詞優化建站公司用戶體驗定制開發網站策劃

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化