更新制造商表后,我按如下方式设置全局状态:
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会导致刷新。但是当我将到期值设置为原始值时,缓存奇怪地将其过时的数据带回来。
为什么此查询缓存仍然保留其陈旧数据?
答案 0 :(得分:0)
重启我的memcache服务器后,它现在运行良好。我想,当我们对此进行任何代码更改时,我们必须重新启动缓存服务器。有人可以对此发表评论吗?