- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道当 pagination
为 false
时,CActiveDataProvider
从单个查询中使用。所以我写了这段代码:
$dependency = new CDbCacheDependency('SELECT MAX(id) FROM user');
$dataProvider = new CActiveDataProvider(User::model()->cache(20, $dependency), array('pagination'=>false));
当数据被缓存时,这个单一的查询被执行:
SELECT MAX(id) FROM user
20 秒后,缓存被刷新,所以有这个查询:
SELECT * FROM `user` `t`
SELECT MAX(id) FROM user
此外,如果我在 User
表中插入一条记录,因为它是依赖项,所以执行的查询是:
SELECT * FROM `user` `t`
SELECT MAX(id) FROM user
这里一切似乎都很好,没问题。
现在我用这个示例查询尝试另一个测试:
$dependency = new CDbCacheDependency('SELECT MAX(id) FROM user');
$dataProvider = new CActiveDataProvider(User::model()->cache(20, $dependency, 2));
我知道在上面的代码中 CActiveDataProvider
使用了两个查询。
缓存数据后,执行这些查询:
SELECT MAX(id) FROM user
SELECT MAX(id) FROM user
奇怪! (为什么?!)
20 秒后,缓存被刷新,我看到执行了这些查询:
SELECT COUNT(*) FROM `user` `t`
SELECT MAX(id) FROM user
SELECT * FROM `user` `t` LIMIT 10
SELECT MAX(id) FROM user
现在,我在这里有 4 个问题!!!
最后我在表中插入一条记录,因为依赖关系必须刷新缓存,但我在这里看到 6 个查询(而不是 4 个查询)!!!
SELECT MAX(id) FROM user
SELECT COUNT(*) FROM `user` `t`
SELECT MAX(id) FROM user
SELECT MAX(id) FROM user
SELECT * FROM `user` `t` LIMIT 10
SELECT MAX(id) FROM user
这种行为很奇怪! (为什么?!)
我认为这是一个错误。
谢谢
最佳答案
你好,我有这个问题并且非常搜索。我知道 $duration 或 $dependency 中的哪一个会过期,缓存也会过期。我的代码示例:
$dependency->sql = 'SELECT MAX(create_date),MAX(update_date),count(id) FROM game where status=:NOT_DONE';
$dependency->params = array(':NOT_DONE'=>Game::NOT_DONE);
$games = new CActiveDataProvider(Game::model()->cache(3600*24*30,$dependency,1));
I know when pagination is false, CActiveDataProvider use from single query.
这句话对我有帮助,谢谢。我正在寻找这个。
http://www.yiiframework.com/doc/api/1.1/CDbConnection#queryCachingDuration-detail
关于php - 关于 CActiveDataProvider 与缓存数据库查询的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22421974/
我跟着 Agile Web Application Development with Yii 1.1 and PHP5 ,从事“TrackStar”项目。对于我的生活,我无法理解我的问题在哪里。 我得
我在 Controller 的索引操作中有这些代码: public function actionIndex() { $cid = @$_GET['cid']; $country = Coun
我想使用 CActiveDataProvider 从表中检索所有数据。 但我想将它加入到其他表中。 第一个表(成员)包含:id、account_id 等 第二个表(table2)由:userid、it
在我的 Yii 项目中,我需要按一些自定义值搜索和排序数据。我有 'users' 表,我需要每个 User 实例都有 month_profit 属性,该属性应该结合 SQL 数据和我自己的大量计算。目
我对此有点难过。基本上我有两个表: 页面: 编号 姓名 积分: id- 页面id 积分 我想从 Page 表中获取记录,并根据它在 Points 表(点字段)中的点数对其进行排序 目前我有: $dat
我正在进行 YII 项目。我有 Production 表,其中有 category_id 和 brand_id 两列。现在我想做的是,只需使用 CActiveDataProvider 将这些特定行获取
我知道当 pagination 为 false 时,CActiveDataProvider 从单个查询中使用。所以我写了这段代码: $dependency = new CDbCacheDependen
所以,我对 yii 有点陌生,如果这听起来像是一个蹩脚的问题,我很抱歉,但我有一些奇怪的行为。我正在尝试加载带有评论的博文,但 actionView 仅返回博文: public functio
我想知道如何在 CActiveDataProvider criteria 上使用 UNION ALL。 表格示例: ID NAME 1 John 查询示例: SELECT * FROM
我现在正在一个杂志网站上工作,我在让 Yii 使用 CActiveDataProvider 返回所有数据时遇到了麻烦。 SQL 查询在通过 SQL 运行时运行良好,并且在 Yii 运行时我没有收到任何
我的代码: $criteria = new CDbCriteria(); // $criteria->select = array("id"); $criteria->with = array('u
我正在尝试从表中选择几行并将其呈现在多个页面中(分页)。这是模型中的一段代码: return new CActiveDataProvider('Downloads', array
我正在尝试使用关系作为标准的一部分来创建 CActiveDataProvider。我有以下内容: 用户模型: return array( 'favourites'=>array(sel
我想缓存 CActiveDataProvider 实例的数据库结果。 我在 Controller 的操作中准备数据提供者,然后在 CGridView 中使用数据提供者,稍后在某些 View 中使用。
我不明白如何在 CActiveDataProvider 中实现多对多关系。 起初的情况,我有一个模型“公司”具有以下关系: return array( 'owner' => a
我是 Yii 的新手,在运行小部件时出现错误“找不到类 'app\controllers\CActiveDataProvider'”。 这是我的代码: 模型/工业.php: array(
我是 Yii 的新手,在运行小部件时出现错误“找不到类 'app\controllers\CActiveDataProvider'”。 这是我的代码: 模型/工业.php: array(
我有 4 个数据库表: 用户:id、用户名、密码 楼层:id, userid, name 房间:id,楼层,名字 学生:id, room, name, active 如何为后续的 SQL 命令返回 C
我从 yii 开始,在尝试使用条件过滤 CActiveDataProvider 时遇到了一些麻烦。 这是我的数据库模型: Table Columns Project
我有一个表结构如下: CREATE TABLE IF NOT EXISTS `CustomValue` ( `id` int(11) NOT NULL, `customFieldId` int
我是一名优秀的程序员,十分优秀!