wwwyii

wwwyii

这家伙有点懒,还没写个性签名!

  • 财富值605
  • 威望值30
  • 总积分1055

个人信息

  • 关注了
  • 赞了回答

    公司开发都会用advanced,建议自己练习也用后者

  • 回复了 的说说
    Yii 相比 Ci 哪个更适用
    有人用过CI吗,用过的人就知道: 1 CI的扩展比较少 2 CI在数据库方面的封装比较差 简言之,用CI的时候很多代码要自己写。
  • 回答了问题 验证码出错

    有上面的错误日志来看,captcha使用的action是site/captcha,但是访问这个链接的时候forbidden了,所以你的site/captch是不是加了权限验证?

  • 回复了 的回答

    首先,建一个MEMORY引擎的表tbl_online,字段分别为ip, time,当用户访问的时候,先判断此ip是否存在于表tbl_online,如果不存在,插入一条新记录,如果存在,更新time。在线会员,可以把ip写成用户的id。
    然后,写一个计划任务,每分钟执行一次。比如,咱们网站在线的定义为半小时访问过,所以计划任务会把time在半小时之外的删除掉。

    其实MEMORY引擎已经很快了,可以看做是对内存的操作。当然如果换成cache会更好。


    同意,我也是这么考虑了一圈,发现用 cache做统计不现实;
    如果要想使用redis/memcache的高性能,那么是不是只能再建立一个数据库,然后系统频频繁操作的数据在这个数据库上操作。

  • 回复了 的回答

    首先,建一个MEMORY引擎的表tbl_online,字段分别为ip, time,当用户访问的时候,先判断此ip是否存在于表tbl_online,如果不存在,插入一条新记录,如果存在,更新time。在线会员,可以把ip写成用户的id。
    然后,写一个计划任务,每分钟执行一次。比如,咱们网站在线的定义为半小时访问过,所以计划任务会把time在半小时之外的删除掉。

    其实MEMORY引擎已经很快了,可以看做是对内存的操作。当然如果换成cache会更好。

    ,舰长,有问题请教。
    上面有同学提到可以是用redis这类缓存,但是我觉得有问题;tbl_online是一个存储用户访问信息的数据表,如果用redis来存储的话,
    1 按照什么样的方式存储每个online信息,是否每个online信息都要一个唯一的键值来代替?还是所有的online ip信息使用一个键值,例如onlineip_info,然后存储的值是一个巨大的数组,包含所有在线ip用户的信息
    2 如果是每个online ip使用唯一的键值,例如online_ip1.1.1.1, online_ip1.2.2.2, 那么怎么统计redis里面有多少个online_ip信息?我看到cache api里面没有这样的统计接口。
    3 如果是所有的online ip使用一个键值,那么就涉及到每次要对一个巨大的数组做操作,性能肯定是问题。
    综上所述,我觉得使用cache来存储是有问题的,请赐教我是不是哪里理解有问题。

  • 赞了回答

    在model中定义:

    public $password;
    

    rules中增加:

    [['password'], 'string']
    

    即可,不要在attributes里定义

  • 回复了 的回答

    登录后,

    $id=Yii::$app->user->identity->id
    

    通过这个就可以获取到你用户模型的id了,然后通过User::findOne($id)就能获得你用户资料了,只是举例,原理就是这样哦~


    session也可以的,取决于并发用户量的大小。
    session用的是内存,当并发用户量比较大的时候,内存会消耗比较大,这个时候可以转用缓存代替。

  • 回复了 的回答

    登录后,

    $id=Yii::$app->user->identity->id
    

    通过这个就可以获取到你用户模型的id了,然后通过User::findOne($id)就能获得你用户资料了,只是举例,原理就是这样哦~


    缓存啊;第一次findIdentity的时候把用户的数据保存到cache中,下次进来的时候去缓存里面取呗

    
       $model = Yii::$app->cache->get("User:$id");
                if ($model === false) {
                    $model = Client::getUserById($id);
                    if ($model !== null) {
                        Yii::$app->cache->set(
                            "User:$id",
                            $model,
                            3600
                        );
                    }
    
                }
                return $model;
    
  • 赞了回答

    特殊的,在view中加载js或者样式即可:

    $this->registerJsFile(......);
    
经理 等级规则
1055/2000
资料完整度
10/100
用户活跃度
0/100

Ta的关注

1

Ta的粉丝

1

Ta的访客

4