簡體   English   中英

yii 刪除所有查詢緩存

[英]yii delete all query cache

我在帶有 php 5.2.4 的 centos 5 上使用 Yii 1.14。 我正在做查詢緩存,如Projects::model()->cache(timeout,dependancy)->findAll(array()) 現在我有很多這樣的。 有沒有辦法清除此應用程序的所有查詢緩存。 我似乎無法找到將這些緩存查詢添加到組然后從緩存中刪除該組的任何信息。 問題是我有很多應用程序使用 memcache,我不想每次更新前都刷新它。 我只想清除與此應用程序相關的所有緩存。

更新我想在更新開始和結束時刷新應用程序緩存。 我在那個位置沒有以cache開頭的文件

 ll paradox/protected/runtime/
total 164
-rw-r--r-- 1 apache apache 155571 Jun  3 15:53 application.log
drwxr-xr-x 2 apache apache   4096 Jun  4 11:53 gii-1.1.12
drwxr-xr-x 2 apache apache   4096 Jun  4 11:53 gii-1.1.14

查看日志Yii::app()->cache->flush執行以下操作

<28 new auto-negotiating client connection
28: Client using the ascii protocol
<28 get ns9e5np1ss92i7mqkjues577o1
>28 sending key ns9e5np1ss92i7mqkjues577o1
>28 END
<39 version
>39 VERSION 1.4.5
<39 flush_all
>39 OK

看起來它清除了所有的內存緩存?

要刪除所有緩存數據,請使用flush()方法:

Yii::app()->cache->flush();

要刪除所有過期的緩存數據,請使用gc()方法:

Yii::app()->cache->gc();

其它的辦法:

//if you use CFileCache
$cache=new CFileCache();
$cache->flush();
//if you use CMemCache
$cache2=new CMemCache();
$cache2->flush();

要找到所有相關方法,請查看 Yii 官方文檔:

請注意,flush 方法僅刷新當前運行的應用程序緩存值。

方法flush()是否刪除所有內容取決於您啟用的緩存類型。 為了更好地理解,您可能需要更深入地研究各個類文件的代碼。

因此,基本上類CCache提供方法flush ,該方法又調用相應cacheClass 的方法'flushValues'。

  1. CDbCache - 方法 'flushValues' 從表 'cacheTable' 中刪除數據 - 因此緩存數據對於單獨的應用程序是分開的。
  2. CFileCache - 從目錄“運行時”中刪除文件。 因此緩存數據對於單獨的應用程序是分開的。
  3. CApcCache - 從 APC 存儲庫中刪除整個緩存數據。 因此來自其他應用程序的緩存數據也將被刪除
  4. CMemCache - 它沒有實現方法flushValues 因此,如果您在使用 MemCache 時調用方法flush ,您將看到在“CCache”類中定義的異常。

如果您在更新/重新部署后需要它,則可以選擇手動刪除文件:
/protected/runtime/cache-1.1.xx.db

使用命令行

php yii cache/flush

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM