yii删除所有查询缓存

px9o7tmv  于 2022-11-09  发布在  其他
关注(0)|答案(4)|浏览(152)

我在Centos 5上使用Yii 1.14,使用php 5.2.4。我正在做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

看起来像是清空了所有的内存缓存?

cclgggtu

cclgggtu1#

要删除所有缓存数据,请使用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方法只会清除目前执行中的应用程序快取值。

guz6ccqo

guz6ccqo2#

方法**flush()**是否删除所有内容取决于您启用的缓存类型。为了更好地理解,您可能需要深入研究各个类文件的代码。
因此,基本上类CCache提供方法flush,该方法依次调用相应cacheClass的方法“flushValues”。

  1. CDbCache -方法“flushValues”从表“cacheTable”中删除数据-因此,缓存数据对于单独的应用程序是单独的。
  2. CFileCache -从'runtime'目录中删除文件。因此缓存数据对于单独的应用程序是单独的。
  3. CApcCache -从APC存储库中删除整个缓存数据。因此,来自其他应用程序的缓存数据也将被删除
  4. CMemCache-它不实现方法flushValues。因此,如果您在使用MemCache时调用方法flush,您将看到在“CCache”类中定义的异常。
bbmckpt7

bbmckpt73#

如果您在更新/重新部署后需要该文件,可以选择手动删除该文件:
/protected/runtime/cache-1.1.xx.db

ds97pgxw

ds97pgxw4#

使用命令行

php yii cache/flush

相关问题