查询缓存在Yii框架中不起作用

时间:2014-03-12 13:18:45

标签: php caching yii

我有一张包含超过27,000条记录的表格。我想获取下拉列表中的所有数据。为此我已经实现了缓存,但它似乎没有工作,因为它变得非常慢并显示空白页面(有时浏览器被挂起)。

以下是我的代码(我正在使用yiiboilerplate):

组件数组中backend / config / main.php的配置:

   'cache' => array(
        //'class' => 'system.caching.CMemCache',
        'class' => 'system.caching.CDbCache',
        'connectionID' => 'db',
    ),

在查看页面中:

    $dependency = new CDbCacheDependency('SELECT MAX(bank_id) FROM bank');
    $bank = CHtml::listData(Bank::model()->cache(1000, $dependency)->findAll('is_active=1', array('order' => 'name')), 'bank_id', 'concatened');
    echo $form->dropDownListRow($model, 'bank_id', $bank, array(
        'empty' => 'Select'
    ));

我认为27000条记录不是大数据,但仍然非常慢,我想在整个应用程序中实现缓存。

我的配置是否正确?我哪里错了?

由于

1 个答案:

答案 0 :(得分:0)

我认为findAll中的参数不正确。

应该是:

Bank::model()
    ->cache(1000, $dependency)
    ->findAll([
       'select' => 'bank_id',
       'order' => 'name ASC', // if it is in ascending order
       'condition' => 'is_active = 1'
    ]);

我不知道concatened是什么,所以我忽略了它。但是你总是可以根据你的条件使用范围。