国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php框架 YII Yii框架如何正確使用MemCache緩存

Yii框架如何正確使用MemCache緩存

Nov 18, 2020 pm 03:29 PM
memcache yii 框架 緩存

Yii框架如何正確使用MemCache緩存

具體操作如下所示:

(圖文教程推薦:yii

一、配置memcache server 服務器

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

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

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

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

1d6798e555534f1b653a66e5b3f6efa.png

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

299809c8d8fcd8f751db5324b0d88b1.png

4、輸入memcached.exe -d start啟動

d4af9fc5457f4f38cc02105f2e0bdee.png

配置成功

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

二、安裝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,
        ],
    ],
],

現(xiàn)在就可以在你的控制器的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();

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

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

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

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

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

后面經過測試,發(fā)現(xiàn)這個方法最后一句 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) 后,再測試發(fā)現(xiàn)問題已經解決。

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

以上是Yii框架如何正確使用MemCache緩存的詳細內容。更多信息請關注PHP中文網其他相關文章!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何評估Java框架商業(yè)支持的性價比 如何評估Java框架商業(yè)支持的性價比 Jun 05, 2024 pm 05:25 PM

評估Java框架商業(yè)支持的性價比涉及以下步驟:確定所需的保障級別和服務水平協(xié)議(SLA)保證。研究支持團隊的經驗和專業(yè)知識??紤]附加服務,如升級、故障排除和性能優(yōu)化。權衡商業(yè)支持成本與風險緩解和提高效率。

PHP 框架的學習曲線與其他語言框架相比如何? PHP 框架的學習曲線與其他語言框架相比如何? Jun 06, 2024 pm 12:41 PM

PHP框架的學習曲線取決于語言熟練度、框架復雜性、文檔質量和社區(qū)支持。與Python框架相比,PHP框架的學習曲線更高,而與Ruby框架相比,則較低。與Java框架相比,PHP框架的學習曲線中等,但入門時間較短。

PHP 框架的輕量級選項如何影響應用程序性能? PHP 框架的輕量級選項如何影響應用程序性能? Jun 06, 2024 am 10:53 AM

輕量級PHP框架通過小體積和低資源消耗提升應用程序性能。其特點包括:體積小,啟動快,內存占用低提升響應速度和吞吐量,降低資源消耗實戰(zhàn)案例:SlimFramework創(chuàng)建RESTAPI,僅500KB,高響應性、高吞吐量

php框架laravel和yii區(qū)別是什么 php框架laravel和yii區(qū)別是什么 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要區(qū)別在于設計理念、功能特性和使用場景。1.Laravel注重開發(fā)的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發(fā)和初學者。2.Yii強調性能和效率,適用于高負載應用,提供高效的ActiveRecord和緩存系統(tǒng),但學習曲線較陡。

yii與Docker:容器化和部署您的應用程序 yii與Docker:容器化和部署您的應用程序 Apr 02, 2025 pm 02:13 PM

使用Docker容器化和部署Yii應用的步驟包括:1.創(chuàng)建Dockerfile,定義鏡像構建過程;2.使用DockerCompose啟動Yii應用和MySQL數(shù)據(jù)庫;3.優(yōu)化鏡像大小和性能。這不僅涉及到具體的技術操作,還包括理解Dockerfile的工作原理和最佳實踐,以確保高效、可靠的部署。

Java框架學習路線圖:不同領域中的最佳實踐 Java框架學習路線圖:不同領域中的最佳實踐 Jun 05, 2024 pm 08:53 PM

針對不同領域的Java框架學習路線圖:Web開發(fā):SpringBoot和PlayFramework。持久層:Hibernate和JPA。服務端響應式編程:ReactorCore和SpringWebFlux。實時計算:ApacheStorm和ApacheSpark。云計算:AWSSDKforJava和GoogleCloudJava。

Golang框架學習過程中常見的誤區(qū)有哪些? Golang框架學習過程中常見的誤區(qū)有哪些? Jun 05, 2024 pm 09:59 PM

Go框架學習的誤區(qū)有以下5種:過度依賴框架,限制靈活性。不遵循框架約定,代碼難維護。使用過時庫,帶來安全和兼容性問題。過度使用包,混淆代碼結構。忽視錯誤處理,導致意外行為和崩潰。

揭秘Java框架的常見故障疑慮 揭秘Java框架的常見故障疑慮 Jun 05, 2024 pm 09:37 PM

常見Java框架故障疑慮:連接池故障:增加連接池大小或使用監(jiān)視工具解決連接池耗盡問題。Hibernate惰性加載異常:在使用惰性加載實體前明確初始化它們。JSON映射錯誤:驗證數(shù)據(jù)類型和JSON格式的正確性。過濾器和攔截器配置問題:仔細檢查配置,確保預期工作方式。

See all articles