1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      Yii框架使用MemCache緩存的示例

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

      我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、汾西ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的汾西網(wǎng)站制作公司

      具體操作如下所示:

      一、配置memcache server 服務(wù)器

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

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

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

      2、windows+R快捷鍵輸入cmd, 在命令行中輸入一下代碼,切換到memcache.exe的目錄下:

      Yii框架使用MemCache緩存的示例

      3、輸入如下代碼安裝memcache.exe: memcached.exe -d install

      Yii框架使用MemCache緩存的示例

      4、輸入memcached.exe -d start啟動(dòng)

      Yii框架使用MemCache緩存的示例

      配置成功

      //memcache常用的函數(shù):
      Memcache::add   //添加一個(gè)值,如果已經(jīng)存在,則返回false
      Memcache::addServer  // 添加一個(gè)可供使用的服務(wù)器地址
      Memcache::close   //關(guān)閉一個(gè)Memcache對(duì)象
      Memcache::connect  // 創(chuàng)建一個(gè)Memcache對(duì)象
      memcache_debug  // 控制調(diào)試功能
      Memcache::decrement  // 對(duì)保存的某個(gè)key中的值進(jìn)行減法操作
      Memcache::delete   //刪除一個(gè)key值
      Memcache::flush  // 清除所有緩存的數(shù)據(jù)
      Memcache::get   //獲取一個(gè)key值
      Memcache::getExtendedStats   //獲取進(jìn)程池中所有進(jìn)程的運(yùn)行系統(tǒng)統(tǒng)計(jì)
      Memcache::getServerStatus// 獲取運(yùn)行服務(wù)器的參數(shù)
      Memcache::getStats   //返回服務(wù)器的一些運(yùn)行統(tǒng)計(jì)信息
      Memcache::getVersion   //返回運(yùn)行的Memcache的版本信息
      Memcache::increment   //對(duì)保存的某個(gè)key中的值進(jìn)行加法操作
      Memcache::pconnect  // 創(chuàng)建一個(gè)Memcache的持久連接對(duì)象
      Memcache::replace   //對(duì)一個(gè)已有的key進(jìn)行覆寫(xiě)操作
      Memcache::set   //添加一個(gè)值,如果已經(jīng)存在,則覆寫(xiě)
      Memcache::setCompressThreshold   //對(duì)大于某一大小的數(shù)據(jù)進(jìn)行壓縮
      Memcache::setServerParams   //在運(yùn)行時(shí)修改服務(wù)器的參數(shù)

      二、安裝php_memcache.dll擴(kuò)展

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

      地址:

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

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

      3、在php.ini里面添加如下代碼,導(dǎo)入擴(kuò)展:

      extension=php_memcache.dll

      三、yii里面的配置

      1.如果你用的是基礎(chǔ)框架:打開(kāi)config/web.php

      如果你用的是高級(jí)框架:打開(kāi)config/main.php

      添加如下代碼:

      'cache' => [
          'class' => 'yii\caching\MemCache',
          'servers' => [
              [
                  'host' => 'localhost',
                  'port' => 11211,
                  'weight' => 100,
              ],
              [
                  'host' => 'localhost',
                  'port' => 11211,
                  'weight' => 50,
              ],
          ],
      ],

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

      //緩存MemCache
       
      $key='key';
      $value='this is the value';
      
      Yii::$app->cache->set($key,$value);
      echo "lixian";
      echo Yii::$app->cache->get($key);
      exit();

      但是當(dāng)你使用過(guò)期時(shí)間時(shí)即:

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

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

      在yii2使用memcache前根據(jù)文檔配置好相應(yīng)的參數(shù),在使用memcache(非memcached)過(guò)程中會(huì)發(fā)現(xiàn) Yii::$app->cache->set('key','value'); 當(dāng)這句話沒(méi)有設(shè)置有效時(shí)間為多少秒時(shí),可以正常獲取到緩存中鍵為key的值,但表示此key不過(guò)期。

      當(dāng)設(shè)置了有效時(shí)間時(shí), Yii::$app->cache->set('key','value',60); 比如60秒,就會(huì)出現(xiàn)取不到key對(duì)應(yīng)的value值,網(wǎng)上和論壇里搜了搜,沒(méi)有找到解決辦法,也有很多phper遇到這類(lèi)似的問(wèn)題。所以特意去看了看底層代碼,引用的memcache類(lèi)為Yii2自帶的yii\caching\MemCache, Yii::$app->cache->set('key','value') 這句代碼會(huì)自動(dòng)調(diào)用memcache類(lèi)下的setValue方法來(lái)設(shè)置緩存,所以問(wèn)題也許就出現(xiàn)在這兒了。

      后面經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)這個(gè)方法最后一句 return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $expire) 的問(wèn)題,將這句代碼改為 return $this->useMemcached ? $this->_cache->set($key, $value, $expire) : $this->_cache->set($key, $value, 0, $duration) 后,再測(cè)試發(fā)現(xiàn)問(wèn)題已經(jīng)解決。

      原因則是這句return代碼里使用memcache時(shí)調(diào)用的 $this->_cache->set($key, $value, 0, $expire) ,相當(dāng)于 $mem = new Memcache();$mem->set($key,$value,0,$expire); 這里最關(guān)鍵的一點(diǎn)是:memcache要設(shè)置的時(shí)間的含義是有效時(shí)間為多少秒,memcached要設(shè)置的時(shí)間的含義是在哪一秒到期(等效于time()+$duration),所以發(fā)現(xiàn)問(wèn)題所在之后將原來(lái)代碼里的第二個(gè)$expire改成$duration問(wèn)題就解決了。

      關(guān)于Yii框架使用MemCache緩存的示例就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


      本文標(biāo)題:Yii框架使用MemCache緩存的示例
      網(wǎng)站路徑:http://www.ef60e0e.cn/article/ghcdoc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        乌什县| 大邑县| 邢台市| 巴东县| 张家界市| 临海市| 五大连池市| 洛隆县| 龙川县| 鹰潭市| 阳朔县| 莱芜市| 肃宁县| 宁化县| 开鲁县| 观塘区| 从江县| 安岳县| 遂平县| 闻喜县| 射洪县| 长海县| 松潘县| 新密市| 西乡县| 宝山区| 兴城市| 维西| 武威市| 台中市| 双江| 灵璧县| 宁阳县| 靖远县| 孝昌县| 上栗县| 保定市| 怀来县| 武汉市| 门头沟区| 平舆县|