当前位置:  编程技术>php
本页文章导读:
    ▪PHP获取IP      原文链接:http://www.cnblogs.com/binaryworms/articles/1947032.html方法一: <?phpfunction GetIP(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $cip = $_SERVER["HTTP_CLIENT_IP"]; } elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){ $cip = $_SERV.........
    ▪php获取目标函数执行时间        几个星期以前,写了一个正则从新浪网首页获取所有的链接地址,存入数组print_r()出来,大约是1400条记录。只是print_r()的话,大概花费了3-4秒的时间,后来,我又加上写入数据库的函数.........
    ▪使用PHP处理大于2038年以后的日期      php函数中的date函数在某些系统(如 Windows)中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。 如何解决这个问题?幸运的是php 5.2.0版本以后.........

[1]PHP获取IP
    来源:    发布时间: 2013-11-07

原文链接:http://www.cnblogs.com/binaryworms/articles/1947032.html

方法一:

<?php
function GetIP(){
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif(!empty($_SERVER["REMOTE_ADDR"])){
$cip = $_SERVER["REMOTE_ADDR"];
}
else{
$cip = "无法获取!";
}
return $cip;
}
echo GetIP();
?>

方法二:

<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE);
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP")){
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR")){
$ip = getenv("REMOTE_ADDR");
}
else{
$ip = "Unknown";
}
echo $ip;
?>

方法三:

<?php
$iipp = $_SERVER["REMOTE_ADDR"];
echo $iipp ;
?>

方法四:

<?php
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
echo $user_IP
?>

方法五:

<?php
function get_real_ip()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip){
array_unshift($ips, $ip); $ip = FALSE;
}
for($i = 0; $i < count($ips); $i++){
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])){
$ip = $ips[$i];
break;
}
}
}
return($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo get_real_ip();
?>

方法六:

<?php
if(getenv('HTTP_CLIENT_IP')){
$onlineip = getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR')){
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR')){
$onlineip = getenv('REMOTE_ADDR');
}
else{
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo $onlineip;
?>

本文链接


    
[2]php获取目标函数执行时间
    来源:    发布时间: 2013-11-07

  几个星期以前,写了一个正则从新浪网首页获取所有的链接地址,存入数组print_r()出来,大约是1400条记录。只是print_r()的话,大概花费了3-4秒的时间,后来,我又加上写入数据库的函数,把取得的url(href中的内容)和链接名(<a></a>之间的内容)写入数据库中,那个php一执行就没有响应,直到页面返回超过最大执行时间的警告。这时,我才真正的体会到搜索引擎从互联网上获取内容的艰辛。

  因此,今天写了一个类,取名为EfficiencyTester,用来测试目标函数的执行时间。贴上代码,希望能与网上的众多大神交流。

  以下是类的定义代码:

<?php/** * class EfficiencyTester * 效率测试器,测试函数的运行时间 * @version 1.0 2013.04.13 * @author Kross */class EfficiencyTester {        /**     * var $testTimes     * 测试的次数      */    private $testTimes = 1000;    /**     * function getTime()     * 根据时间模式,获取时间戳     * @param $timeModel 时间模式,默认:微秒     * @return int 时间戳     */    private function getTime($timeModel = 'MS') {        if ($timeModel == 'MS') {            return microtime();        } else if ($timeModel == 'S') {            return time();        } else {            return microtime();        }    }    /**     * function testOnce()     * 测试目标函数一次,返回运行时间     * @param $functionName 目标函数名     * @param $timeModel 时间模式,默认:微秒     * @return double 目标函数运行一次的时间(很随机)     */    public function testOnce($functionName, $timeModel = 'MS') {                $startMicroTime = $this->getTime($timeModel);        $functionName();        $endMicroTime = $this->getTime($timeModel);        $costMicroTime = $endMicroTime - $startMicroTime;        return $costMicroTime;    }    /**    * function test()    * 测试目标函数多次,返回运行时间(平均值)    * @param $functionName 目标函数名    * @param $timeModel 时间模式,默认:微秒    * @return double 目标函数运行的时间    */    public function test($functionName, $timeModel = 'MS') {        $totalMicroTimes = 0;        for ($i = 1; $i <= $this->testTimes; $i++) {            $totalMicroTimes += $this->testOnce($functionName);        }        return $totalMicroTimes / $this->testTimes;    }}?>

  以下是类的测试代码:

<?phprequire_once('../class/EfficiencyTester.class.php');$e = new EfficiencyTester();echo $e->test('rand');?>

  一开始我是直接使用 microtime() 获取时间的,后来考虑到如果想获得单位是秒的运行时间,这样写就不够多态了,然后我就写了一个getTime() 的函数来获取不同单位的时间戳,不过这样,貌似目标函数的运行时间变长了,可能是因为 getTime() 函数中的判断占用了一部分时间。如果各位看官有什么好的主意,希望能给我留言,让我学习学习~O(∩_∩)O

本文链接


    
[3]使用PHP处理大于2038年以后的日期
    来源:    发布时间: 2013-11-07
php函数中的date函数在某些系统(如 Windows)中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。
 
如何解决这个问题?
幸运的是php 5.2.0版本以后我们直接使用php的DateTime 类
DateTime::format 被设计成不受外部设置影响(面向对象就应该如此)
所以无论你如何改变环境参数 date_default_timezone ,都不会影响输出结果
要想改变 DateTime::format 的时区设置,需要向
DateTime::setTimezone 传入一个时区对象 DateTimeZone
1 $d = new DateTime('@2444486400');2 $d->setTimezone(new DateTimeZone('PRC'));3 echo $d->format('Y-m-d H:i:s');  //2047-06-19 00:00:00

将大于2038年的标准时间转化成时间戳

1 $d = new DateTime('2047-06-19 00:00:00');2 echo $date->format('U'); //2444486400

 

本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3