查询缓存不使用CGlobalStateCacheDependency

时间:2014-04-01 02:29:53

标签: yii

更新制造商表后,我按如下方式设置全局状态:

Yii::app()->setGlobalState('manufacturer_updated', new DateTime());

但是从下拉框中调用getAllManufacturers的缓存列表没有刷新:

<?php echo $form->dropDownList($model,'manufacturer_id', CHtml::listData(Manufacturer::model()->getAllManufacturers(), 'id', 'name'), array('prompt'=>'Select Manufacturer')); ?>

下拉框中调用的模型中的函数:

public function getAllManufacturers()
{
    $sql = 'SELECT id, name FROM manufacturer WHERE store_id =:store_id ORDER BY name';
    $cmd = Yii::app()->db->cache(72000, new CGlobalStateCacheDependency('manufacturer_updated'))->createCommand($sql); //20 hours cache
    $cmd->bindValue(':store_id', Yii::app()->session["current_store_id"], PDO::PARAM_INT);
    return $cmd->queryAll();
}

实际上,它在开始时工作了2-3次。之后,缓存永远不会刷新。但是,将到期时间更改为0会导致刷新。但是当我将到期值设置为原始值时,缓存奇怪地将其过时的数据带回来。

为什么此查询缓存仍然保留其陈旧数据?

1 个答案:

答案 0 :(得分:0)

重启我的memcache服务器后,它现在运行良好。我想,当我们对此进行任何代码更改时,我们必须重新启动缓存服务器。有人可以对此发表评论吗?