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;
    }
}
时间: 2024-09-30 11:24:01

thikphp5.0 ip地址库 解决卡顿问题 curl_init的相关文章

解析纯真IP地址库

一周以来,一直在做 IP地址库的解析.从调研到编码到优化,大概花了有七八天的时间.感觉很好玩.总结一下整个做的过程. 1.关于IP 地址库的解析方式 目前主要的解析方式有两种:通过API,或通过IP数据库. API方式很简单,目前国内大厂不少提供API接口,只要发送请求的IP,就能获得相应的地理位置.像BAT等等公司都提供IP查询接口.这种解析方式的好处在于,编码简单,一个请求获得数据,然后解析一下就好了(通常只是个json数据),而且不用维护数据库,对本地没有负担.但是缺点也挺明显的,首先是慢

淘宝IP地址库设计

当初选择做这么一个项目,不是为了拷贝一份库自己做服务,也不是为了其他目的,只是单纯的熟悉关于http和mysql方面的知识. 下面言归正传. 1.淘宝IP地址库简介 此地址库可以根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 用户也可以主动提交信息来纠错. 主要优势表现为: (1)地域 覆盖度:94.54% 精确到市级 准确度:96.5% 精确到市级 (2)运营商 覆盖度:93.8% 准确度:暂无统计数据 (3)查询速度 10qps 注:阿

XXX全球 IP 地址库

XXX全球 IP 地址库 Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123.23.8 93.123.23.9 93.123.23.10 93.123.23.11 93.123.23.12 93.123.23.13 93.123.23.14 93.123.23.15 93.123.23.16 93.123.23.17 93.123.23.18 93.

Google全球IP地址库

Google 全球 IP 地址库 Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123.23.8 93.123.23.9 93.123.23.10 93.123.23.11 93.123.23.12 93.123.23.13 93.123.23.14 93.123.23.15 93.123.23.16 93.123.23.17 93.123.23.18

[转]Google 全球 IP 地址库

IP 地址来源:http://www.kookle.co.nr Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123.23.8 93.123.23.9 93.123.23.10 93.123.23.11 93.123.23.12 93.123.23.13 93.123.23.14 93.123.23.15 93.123.23.16 93.123.23.

Google 全球 IP 地址库

Google 全球 IP 地址库 IP 地址来源:http://www.kookle.co.nr,共计4351个. Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123.23.8 93.123.23.9 93.123.23.10 93.123.23.11 93.123.23.12 93.123.23.13 93.123.23.14 93.123.23.

[分享]Google 全球 IP 地址库[Google Global Cache IPs]

Google 全球 IP 地址库 IP 地址来源:http://www.kookle.co.nr,共计4351个. Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123.23.8 93.123.23.9 93.123.23.10 93.123.23.11 93.123.23.12 93.123.23.13 93.123.23.14 93.123.23.

Delphi使用JSON解析调用淘宝IP地址库REST API 示例

淘宝IP地址库:http://ip.taobao.com,里面有REST API 说明. Delphi XE 调试通过,关键代码如下: [delphi] view plaincopy var IdHTTP: TIdHTTP; RequestURL: string; ResponseStream: TStringStream; JO, JData: TJSONObject; begin IdHTTP := TIdHTTP.Create(nil); IdHTTP.ReadTimeout := 0;

wireshark ip地址库添加

wireshark ip地址库添加.md http://www.iprotocolsec.com/2011/09/13/wireshark使用技巧-geoip显示ip地理位置/http://www.iprotocolsec.com/2011/08/24/修改wireshark-显示报文进程名称/http://www.iprotocolsec.com/2012/11/07/wireshark技巧-解密ssl协议/ 来自为知笔记(Wiz)