gpt4 book ai didi

mysql - Yii - CActive 记录 - 如何解决服务器查询缓存

转载 作者:行者123 更新时间:2023-11-29 00:35:45 25 4
gpt4 key购买 nike

我正在为我的 webapp 使用 Yii 框架(使用 ACtiveRecord)。在 ACtiveRecord 的背后,框架管理来自数据库的所有查询。

我的问题是我在共享服务器上,结果发现服务器启用了查询缓存,这对 S 来说是一个痛苦。我真的需要绕过查询缓存。FlUSH 对我不起作用,因为我没有重新加载权限。

如果我将每个 ActiveRecord 数据库提取用作粗略的 mySQL 查询,我想我可以将查询本身设置为禁用缓存的方式,例如使用 NO_CACHE 标记,或使用涉及当前的错误查询术语时间戳(导致每个查询都是不同的查询文本)。

我想问你们的问题是,使用 Yii/ActiveRecord 方案最好的方法是什么。我可以更改 findAll() 函数的实现吗?我有一个 CActiveRecord 的子类,所以如果有什么我可以在那里做的,那将是完美的。

很抱歉这个问题很长。宜兰

最佳答案

默认范围

模型类可以有一个默认范围,该范围将应用于有关该模型的所有查询(包括关系查询)。为此,我们重写 CActiveRecord::defaultScope 方法,如下所示,

class Content extends CActiveRecord
{
public function defaultScope()
{
return array(
'condition'=>"1<='".time()."'",
);
}
}

注意:默认范围和命名范围仅适用于 SELECT 查询。对于 INSERT、UPDATE 和 DELETE 查询,它们将被忽略。此外,当声明范围(默认或命名)时,AR 类不能用于在声明范围的方法中进行数据库查询。

http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes

关于mysql - Yii - CActive 记录 - 如何解决服务器查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14380225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com