php yii框架操作redis问题。可以获取到redis对象信息,但是set总是报错。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php yii框架操作redis问题。可以获取到redis对象信息,但是set总是报错。相关的知识,希望对你有一定的参考价值。

错误信息:"Failed to open redis DB connection (127.0.0.1:6379, database=0): 13 - Permission denied"目录权限 777,main-local配置文件redis的主机不管是localhost还是127.0.0.1都不好使。。。

1.在配置项中定义:
12345'SESSION_TYPE' => 'Redis', //session保存类型'SESSION_PREFIX' => 'sess_', //session前缀'REDIS_HOST' => '127.0.0.1' //REDIS服务器地址'REDIS_PORT' => 6379, //REDIS连接端口号'SESSION_EXPIRE' => 3600, //SESSION过期时间
2.在Thinkphp\Library\Think\Session\Driver目录下新建Redis.class.php文件
文件内容如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162<?phpnamespace Think\Session\Driver;class Redis // Redis连接对象 private $redis;// Session过期时间 private $expire; /** * 打开方法 * @param type $path * @param type $name * @return type */ public function open($path, $name) $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxLifetime'); $this->redis = new Redis(); return $this->redis->connect(C('REDIS_HOST'), C('REDIS_PORT')); /** * 关闭 * @return type */ public function close() return $this->redis->close(); /** * 读取 * @param string $id * @return type */ public function read($id) $id = C('SESSION_PREFIX') . $id; $data = $this->redis->get($id); return $data ? $data : ''; /** * 写入 * @param string $id * @param type $data * @return type */ public function write($id, $data) $id = C('SESSION_PREFIX') . $id; return $this->redis->set($id, $data, $this->expire); /** * 销毁 * @param string $id */ public function destroy($id) $id = C('SESSION_PREFIX') . $id; $this->redis->delete($id); /** * 垃圾回收 * @param type $maxLifeTime * @return boolean */ public function gc($maxLifeTime) return true;
memcached的方法和Redis差不多一样!
参考技术A 从错误提示来看,是权限问题。检查一下redis连接配置,有没有设置密码等,然后自己本地先连接一下redis看看能不能连接,如果能正常连接,再使用同样的配置,用Yii来连接。

Yii 框架 - 从视图到控制器动作的简单传递变量

【中文标题】Yii 框架 - 从视图到控制器动作的简单传递变量【英文标题】:Yii framework - Simple passing variable from View to Controller action 【发布时间】:2014-07-30 12:32:17 【问题描述】:

我正在使用 Yii 框架 1.1.14。我想要的只是将变量(例如$var)从视图传递到控制器(例如VideoController)中的特定操作(例如index)。我希望我的代码如下所示:

<a href="<?php /* Here will be route to specific controllers 
                  action with variable $var which will be 
                  passing by this way */ 
         ?>"></a>

所以点击此链接后,用户将被重定向到此特定操作的 url,并且在此操作内,将有可访问变量 $var。 有没有使用 Yii 语法的简单方法?或者如果我想传递多个参数会是什么样子?

【问题讨论】:

【参考方案1】:

在你看来:

<a href="
    <?php
        echo $this->createUrl('controller/action', array(
            'var' => $var,
            'var2' => $var2
        ));
     ?>">
</a>

或者

<?php 
    echo CHtml::link('link text', array(
        'controller/action', 
         'var' => $var,
         'var2' => $var2
    )); 
?>

在您的控制器中:

public function actionAction($var, $var2)

    //Since the createUrl as generated a $_GET parameter
    // $var will be automatically set here if you put it
    // In the method parameters

【讨论】:

以上是关于php yii框架操作redis问题。可以获取到redis对象信息,但是set总是报错。的主要内容,如果未能解决你的问题,请参考以下文章

yii框架下使用redis

php之yii2简单redis锁限制

获取yii框架Url

php 怎么获取微信服务器发送的componentverifyticket yii框架

Yii2redis配置,跳转

php YII框架 js里如何通过onclick 传值