我在带有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官方文件:
- 缓存
- CFileCache
- CMemCache
- CApcCache
请注意,flush方法仅刷新当前运行的应用程序缓存值。
方法flush((是否删除所有内容取决于您启用的缓存类型。为了更好地理解,您可能需要深入研究各个类文件的代码。
因此,类CCache
基本上提供了方法flush
,该方法反过来调用相应cacheClass的方法"flushValues"。
- CDbCache-方法"flushValues"从表"cacheTable"中删除数据-因此缓存数据对于单独的应用程序是单独的
- CFileCache-从目录"runtime"中删除文件。因此,缓存数据对于单独的应用程序是分开的
- CApcCache-从APC repo中删除整个缓存数据。因此,来自其他应用程序的缓存数据也将被删除
- CMemCache-它没有实现方法
flushValues
。因此,如果您在使用MemCache时调用方法flush
,您将看到在"CCache"类中定义的Exception
如果您在更新s/重新部署后需要它,可以选择手动删除文件:/protected/runtime/cache-1.1.xx.db
使用命令行
php yii cache/flush
使用命令行
./yii cache/flush-all
或
php yii cache/flush-all