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, );
// 抓取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==){//如果取不到就去取新浪的
$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;
}
}
thikphp5.0 ip地址库 解决卡顿问题 curl_init的更多相关文章
- 解析纯真IP地址库
一周以来,一直在做 IP地址库的解析.从调研到编码到优化,大概花了有七八天的时间.感觉很好玩.总结一下整个做的过程. 1.关于IP 地址库的解析方式 目前主要的解析方式有两种:通过API,或通过IP数 ...
- 用淘宝ip地址库查ip
这是一个通过调用淘宝ip地址库实现ip地址查询的功能类 using System; using System.Collections.Generic; using System.Linq; using ...
- Delphi使用JSON解析调用淘宝IP地址库REST API 示例
淘宝IP地址库:http://ip.taobao.com,里面有REST API 说明. Delphi XE 调试通过,关键代码如下: var IdHTTP: TIdHTTP; RequestURL: ...
- 淘宝IP地址库采集器c#代码
这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下. 最近做一个项目,功能类似于CNZZ站长统计功能,要求显示Ip所在的省份市区/提供商等信息.网上的Ip纯真数据库,下载下来一看 ...
- 淘宝IP地址库API接口(PHP)通过ip获取地址信息
淘宝IP地址库网址:http://ip.taobao.com/ 提供的服务包括: 1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 2. 用 ...
- 淘宝IP地址库采集
作者:阿宝 更新:2016-08-31 来源:彩色世界(https://blog.hz601.org/2016/08/31/taobao-ip-sniffer/index.html) 简述 当初选择做 ...
- 【竞价网站绝技】根据访客ip,页面显示访客所属城市的html代码(借用YY IP地址库)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 淘宝IP地址库API地址
淘宝IP地址库:http://ip.taobao.com/instructions.php 接口说明 1. 请求接口(GET): http://ip.taobao.com/service/getI ...
- 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 ...
随机推荐
- postgresql 修改字段名称
ALTER TABLE auth_user RENAME email TO aemail;
- 基于jQuery仿迅雷影音官网幻灯片特效
分享一款基于jQuery仿迅雷影音官网幻灯片特效迅.雷影音官网jQuery幻灯片特效是一款带左右箭头,索引按钮切换的jQuery幻灯片代码.效果图如下: 在线预览 源码下载 实现的代码. html ...
- Gnome3 安装系统监视器
. . . . . 之前使用Gnome2的时候可以向面板上添加一个系统监视器,相信很多人都用过这个实用的小工具,可以很方便的了解系统的运行概况.但是自从使用了Gnome3之后这个小工具不见了,Gnom ...
- [uboot]uboot中run的一些command在源码位置
如在uEnv.txt中, loadfdt=fatload mmc ${mmcdev}: ${fdtaddr} ${fdtfile} fdtboot=run mmc_args; bootz ${load ...
- 在controller中无法通过注解@Value获取到配置文件中定义的值
1. 默认的我们通常只在dao层用到jdbc的配置,然后使用到@Value注解获取到值. 这时候会在spring-dao扫描中加入下面配置 <context:property-placehold ...
- 【随记】Q号解除限制一波三折
平日里养了一批QQ号码,前段时间部分号码出问题了,在一个不可能是我登录的时间登录了,而且还异常操作了.结果,被QQ安全中心关进了小黑屋,让我发送手机短信去领回来.这是事情的背景,不细述了. 这个事情的 ...
- linq操作符:连接操作符
linq中的连接操作符主要包括Join()和GroupJoin()两个. 一.Join()操作符 Join()操作符非常类似于T-SQL中的inner join,它将两个数据源进行连接,根据两个数据源 ...
- 引用dataframe的值为什么会不同
在R语言中,通常有一些操作符可以来提取对象的子集,如以下三种: 1.“[” 单层方括号,返回的对象与原对象类型相同,它也可以返回一个对象中的多个元素: 2.“[[” 双层方括号,用来从列表(list) ...
- 很简单的在Ubuntu系统下安装字体和切换默认字体的方法
摘要: Ubuntu系统安装好后,默认字体对于中文的支持看上去不太美丽,于是很多朋友可能需要设置系统的默认字体为自己喜欢的字体.本文主要介绍如何解决这两个问题. 说明:测试系统是Ubuntu14.04 ...
- MinGW32和64位交叉编译环境的安装和使用
原文出处: CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64 http://www.kinetic ...