TypeCodes

WordPress使用淘宝IP地址库的API显示评论者的位置信息(三)

1 PHP版本的淘宝IP地址库接口说明

在上一篇文章《WordPress使用淘宝IP地址库的API显示评论者的位置信息(二)》中,vfhky使用了jQuery来获取淘宝的API接口返回的数据。那么这篇文章就接着写如何直接使用PHP实现WordPress调用淘宝IP地址库的API显示评论者的位置信息。相比上一个jQuery的版本,这个PHP版本的代码就简单得多了用。只需两步就可以实现。

2.1 在主题functions.php添加API调用函数

在主题文件目录下的functions.php文件中添加如下代码,其作用是拼接调用淘宝API的请求URL地址并获取返回的jQuery数据信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/************
 *** @Function:PHP获取淘宝IP地址库API返回的信息
 *** @Author:vfhky http://vfhky.sinaapp.com 20130825
 *** @param string $ip   IP地址     
 *** @return string "中国江苏南京 电信"
************/
function ipdata($ip)
{
  //prevent the sql-injection(From:http://vfhky.sinaapp.com/web/php/20.html)
  $ip = trim($ip);
  $ip = strip_tags($ip,"");
  $ip = str_replace("\n", "", str_replace(" ", "", $ip));
  $ip = str_replace("\t","",$ip);
  $ip = str_replace("\r\n","",$ip);
  $ip = str_replace("\r","",$ip);
  $url="http://ip.taobao.com/service/getIpInfo.php?ip=";
  $data=json_decode(file_get_contents($url.$ip));

  //建议不启用debug模式,即默认$data->code的值为0,淘宝API正常响应。(测试时可以考虑$data->code为1的情况)
  $ipdata=$data->data;
  return $ipdata->country.$ipdata->region.$ipdata->city.$ipdata->isp;
}
2.2 在WP主题评论者信息的相应位置调用函数

在WordPress主题的评论者信息的相应位置调用上面的函数即可显示由淘宝IP地址库返回来的API数据。简单示例:

//$ipaddress是从数据库中查找出评论者的IP地址
echo ipdata($ipaddress);
3 后记

两步就搞定了,而且代码简单得很!所以,PHP版本的《WordPress使用淘宝IP地址库的API显示评论者的位置信息(三)》很适合PV量不是很大的blog使用,响应速度估计可能比jQuery版本的还要快一些。不过,淘宝的这个API是有请求频率限制的:为了保障服务正常运行,每个用户的访问频率需小于10qps。什么是QPS?博主网上查找了一些资料,整理如下,算是给自己的一个科普。

QPS每秒查询率(Query Per Second)
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

术语说明:
QPS = req/sec = 请求数/

QPS计算PV和机器的方式】

QPS统计方式 [一般使用 http_load 进行统计]
QPS = 总请求数 / ( 进程总数 * 请求时间 )
QPS: 单个进程每秒请求服务器的成功次数

单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8

服务器计算
服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )

【峰值QPS和机器计算公式】

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( PV * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

问:每天300w PV 的在单台机器上,这台机器需要多少QPS
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

问:如果一台机器的QPS58,需要几台机器来支持?
答:139 / 58 = 3
打赏支持

Comments »