PHP处理大数据量老用户头像更新的操作

Posted 邹柯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP处理大数据量老用户头像更新的操作相关的知识,希望对你有一定的参考价值。

    /**
     * @title 老用户头像更新--每3秒调用一次接口,每次更新10条数据
     * @example user/createHeadPicForOldUser?
     * @method GET
     * @author 邹柯
     */
    public function createHeadPicForOldUserAction(){
        $domain=$_SERVER[HTTP_HOST];
        $ob = new UserModel();
        $user=M(user);
        $u_where="head_pic is null or head_pic=‘‘";
        $count=$user->where($u_where)->count();
        $user_info=$user->field(user_id)->where($u_where)->page(1,10)->select();
        if($count !=0){
            for($i=0;$i<10;$i++){
                //获取一个默认头像
                $h_pic=$ob->getDefaultUserHeadPic();
                $re=$user->data([head_pic=>$h_pic])->where([user_id=>$user_info[$i][user_id]])->save();
            }
            echo "还剩".$count."条记录没更新";
            exit("<script>setTimeout(function(){location.href=‘http://$domain/user/createHeadPicForOldUser‘;},3000);</script>");
        }else{
            exit("更新完毕");
        }        
        
    }

 

    //注册时给用户分配一个随机头像(或老用户登录时给其分配一个随机头像)
    public function getDefaultUserHeadPic(){
        $default_avatar=M(default_avatar a);
        $avatar_style=M(avatar_style s);
        $da_where[a.is_deleted]=0;
        $da_where[a.status]=1;
        $da_where[s.is_deleted]=0;
        $da_where[s.status]=1;
        $default_avatar_info=$default_avatar->field("a.id,img as head_pic")
                ->join(left join lc_avatar_style s on a.style_id=s.id)
                ->where($da_where)
                ->select();  
        $cn=count($default_avatar_info);
        $cs=rand(0,$cn-1);
        return $default_avatar_info[$cs][head_pic];
    }    

 

以上是关于PHP处理大数据量老用户头像更新的操作的主要内容,如果未能解决你的问题,请参考以下文章

PHP操作mysql数据库

SpringBoot + Vue 前后端分离(用户信息更新&头像上传&Markdown图片上传)

HTTP中GET或PUT方式传body数据

python+mysql+flask创建一个微博应用(持续更新)

微信公众平台消息接口里,如何用php获取用户头像

Spring MVC 学习笔记 --- [SpringMVC的文件上传与拦截器,以及更新登录用户头像的简易案例]