• thikphp5.0 ip地址库 解决卡顿问题 curl_init


    使用淘宝新浪的地址库非常的使用,但是调用有时候会出现很慢。会导致卡在当前网页。

    要想不影响当前速度,因此要使用 curl_init功能。

    项目案例:会员登陆日志  

    user_log 字段:id,user_id,user_name,ip,address,add_time

    思路:

    1.如果登陆成功send线下发送请求,带参数id,name,ip

    2.在方法add_log接收参数,并且开始转化值(要插入user_log字段的数据),其中会用到getAddressFromIp 淘宝新浪地址库

    具体操作: 

    第一步骤:如果登录成功,就开始发送异步请求

    $res = db()->where()->update();
    if
    ($res){ // 创建session数据 $user['id'] = $login['data']['id']; $user['name'] = $login['data']['name']; $user['role_name'] = model('role')->RoleText($login['data']['role_id']); $user['action_list'] = $login['data']['action_list']; $user['token'] = $token; Session::set('user',$user); // 新增登陆日志 $http = [ 'id'=>Session::get('user.id'), 'name' => Session::get('user.name'), 'ip' => request()->ip(), ]; send("http://".request()->host().url('login/add_log',$http)); //send('http://localhost/rookie/admin/login/add_log.html'); // 跳转内页 $this->redirect('index/index'); }else{ $this->error('登陆失败'); }

    第二步骤,要准备写几个方法,方便后面调用

    /**
     * php 异步请求数据
     * @host 格式
     * @http://localhost/rookie/login/add.html
     * @http://www.xxx.com
     * */
    function send($host){
        // 创建一个新cURL资源
        $ch = curl_init();
    
        // 设置URL和相应的选项
        curl_setopt($ch, CURLOPT_URL, $host);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        // 抓取URL并把它传递给浏览器
        curl_exec($ch);
        // 关闭cURL资源,并且释放系统资源
        curl_close($ch);
    }
    /**
         * 新增登陆日志
         * @ get传递过来参数  id,name,ip
         * 格式:http://localhost/rookie/admin/login/add_log.html?id=1&name=admin&ip=113.102.134.153
         * @ 需要合成 id,name,ip,address,add_time
         * */
        public function add_log(){
            //$ip = '113.102.134.153';
            $user_id = input('param.id');
            $user_name = input('param.name');
            $ip = input('param.ip');
    
            $data['user_id'] = $user_id;
            $data['user_name'] = $user_name;
            $data['ip'] = $ip;
            $address = getAddressFromIp($ip);
            $data['address']  = implode(' ',$address);
            $data['add_time'] = time();
    
            db('user_login')->insert($data);
    
            //file_put_contents('7.txt',urldecode(json_encode($data)));
            //file_put_contents('7.txt',$user_name);
        }
    /*
     *  新浪,淘宝IP地址库
     * */
    function getAddressFromIp($ip){
        $urlTaobao = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
        $urlSina = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip;
        $json = file_get_contents($urlTaobao);
        $jsonDecode = json_decode($json);
        if($jsonDecode->code==0){//如果取不到就去取新浪的
            $data['country'] = $jsonDecode->data->country;
            $data['province'] = $jsonDecode->data->region;
            $data['city'] = $jsonDecode->data->city;
            $data['isp'] = $jsonDecode->data->isp;
            return $data;
        }else{
            $json = file_get_contents($urlSina);
            $jsonDecode = json_decode($json);
            $data['country'] = $jsonDecode->country;
            $data['province'] = $jsonDecode->province;
            $data['city'] = $jsonDecode->city;
            $data['isp'] = $jsonDecode->isp;
            $data['district'] = $jsonDecode->district;
            return $data;
        }
    }
  • 相关阅读:
    Prime Cryptarithm
    Barn Repair
    Mixing Milk
    June Challenge 2017
    Dual Palindromes
    数学专题
    遗传算法学习
    UVA 11464 暴力+位运算 ***
    233
    hdu 3236 二维背包
  • 原文地址:https://www.cnblogs.com/wesky/p/6274968.html
Copyright © 2020-2023  润新知