将会话存储在MemCache中,而不是Yii 1.x中的默认会话存储

kyvafyod  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(222)

这是我在Yii 1.x应用程序中添加到config/main.php的代码:

'mCache' => array(
        'class' => 'system.caching.CMemCache',
        'useMemcached'=>true,
        'keyPrefix'=>'',
        'hashKey'=>false,
        'serializer'=>false,
        'servers' => array(
            array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 10000)
        ),
    ),

    'session' => array(
        'sessionName' => 'PHPSESSID',
        'class' => 'CCacheHttpSession',
        'autoStart' => true,
        'cacheID' => 'mCache',
        'cookieMode' => 'only',
        'timeout' => 1200
    ),

接下来我应该怎么做,强制Yii使用CMemCache,而不是默认的会话存储?

7kjnsjlb

7kjnsjlb1#

我知道这个答案是旧的,但这种配置是有效的

'memcacheConn'=>array(
        'class'=>'CMemCache',
        'servers'=>array(
            array(
                'host'=>'172.17.0.1',
                'port'=>11211,
                //'weight'=>60,
            ),
        ),
    ),
    'session' => array(
        'class' => 'CCacheHttpSession',
        'autoStart' => true,
        'cacheID' => 'memcacheConn',
        'cookieMode' => 'allow',
        'sessionName' => 'MYSSIONNAME',

    ),
wnrlj8wa

wnrlj8wa2#

您有没有看过Yii 1.x API文档中关于CMemCache的介绍?我想您没有。在这篇文档的第一段,您有一个例子,如何在Yii 1.x中使用CMemCache
在配置文件的session键中将'class'=>'CCacheHttpSession'更改为'class'=>'CMemCache'。您不必像在示例(mCache)中那样将CMemCache注册为单独的组件。您可以直接在session配置键中配置它。
来自Yii 1.x API documentation的示例:

array
(
    'components'=>array
    (
        'cache'=>array
        (
            'class'=>'CMemCache',
            'servers'=>array
            (
                array
                (
                    'host'=>'server1',
                    'port'=>11211,
                    'weight'=>60,
                ),
                array
                (
                    'host'=>'server2',
                    'port'=>11211,
                    'weight'=>40,
                )
            )
        )
    )
)

相关问题