/**
 * Class Interval
 * @author logonmy
 * @desc  简单分析程序执行时间;
 */
 
Class Interval{
    var $start;
 
    public function getTrueTime()
    {
        list($sec,$unix) = explode(' ',microtime());
        return (float)$unix+(float)$sec;
    }
 
    public function __construct()
    {
        $this->start = $this->getTrueTime();
    }
 
    public function spend()
    {
        return round($this->getTrueTime() - $this->start,4);
    }
}
 
 
Class GetIpToCity{
    var $city;//获取ip对应城市,本单位网络平均用时0.3秒;
 
    public function __construct()
    {
        $this->city = $this->get_ip_to_city();
    }
 
    public function get_ip_to_city()
    {
        $city = '';
        $ip = $this->getip();
        $ip_api = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip';
        $json_data = file_get_contents($ip_api.$ip);
        $ip_data = json_decode($json_data,true);
        $city = $ip_data['city'];
        return $city;
    }
 
    ////获得访客真实ip
    public function getip(){
        if(!empty($_SERVER["HTTP_CLIENT_IP"])){
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        }
        if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ //获取代理ip
            $ips = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
        }
        if($ip){
            $ips = array_unshift($ips,$ip);
        }
        $count = count($ips);
        for($i=0;$i<$count;$i++){
            if(!preg_match("/^(10|172\.16|192\.168)\./i",$ips[$i])){//排除局域网ip
                $ip = $ips[$i];
                break;
            }
        }
        $tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR'];
        if($tip=="127.0.0.1"){ //获得本地真实IP
            return $this->get_onlineip();
        }else{
            return $tip;
        }
    }
 
    ////获得本地真实IP
    public function get_onlineip() {
        $mip = file_get_contents("http://iframe.ip138.com/ic.asp");
        if($mip){
            preg_match("/\[.*\]/",$mip,$sip);
            $p = array("/\[/","/\]/");
            return preg_replace($p,"",$sip[0]);
        }else{return null;}
    }
 
 
 
}

最新文章

  1. glib-2.49.4 static build step in windows XP
  2. Tomcat8启动报there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
  3. 在linux上搭建本地yum源
  4. pgbouncer配置
  5. c++基础(二):成员he派生类
  6. thrift的简单实现
  7. LOL是什么意思? - 已解决 - 搜狗问问
  8. PClady专访中国第一名媛、元媛舞会总裁周采茨女士【图】_摩登前沿 _奢品 _太平洋时尚网
  9. BDIA增强
  10. 支撑Pinterest日均1000+次试验的A/B测试平台揭秘
  11. VTL(Velocity Templates Language,即Velocity模板语言)初识语法总结
  12. Shell——数学计算
  13. winfrom 图片裁剪 圆形头像
  14. Vue+koa2开发一款全栈小程序(1.课程介绍+2.ES6入门)
  15. Docker 介绍及安装
  16. [CodeForces 892A] Greed (Java中sort实现从大到小排序)
  17. Vue音乐项目笔记(一)
  18. git--(3)分支 合并
  19. tail -f 与 tail -F的区别
  20. MVC4删除 pages引发的异常 System.Web.Optimization找不到引用

热门文章

  1. 对Java 注解的一些理解
  2. Java应对Flash XSS攻击
  3. Saltstack 命令行:批量覆盖指定文件
  4. 使用redis做mysql缓存
  5. MySQLdump增量备份、完全备份与恢复
  6. Spring AOP(6)-- XML配置
  7. mysql分库分表(一)
  8. quartz(2) -- 入门案例
  9. spark学习14(spark local模式运行spark程序的报错)
  10. ACM-ICPC北京站总结