原文链接: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;
?>
本文链接
几个星期以前,写了一个正则从新浪网首页获取所有的链接地址,存入数组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
本文链接
所以无论你如何改变环境参数 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
本文链接