求助:php文本操作问题 CSV->exel->odbc->数据库怎么查,这玩意就怎么查 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SORRY,没看清要求。记得使用WEBTRENDS分析WEB SERVER LOG的时候,好象它都会先生成一个自有格式的数据库,然后再读这个数据库来做分析报告,不知道我记得对不对。直接文本分析的效率……100W条……汗…… 在写文件之前用pack(),$format=A20A10;pack($format,$data1,$data2)-------------------------------读取出来再unpack()$format=A20data1/A10data2;$mydata=unpack($format,$yourdata)echo $mydata['data1']echo $mydata['data2']这样会不会操作简单一点呢。又或是今天第一个人访问时,把数据放进临时表,然后所有人再在这个临时表上操作。只是提供个思路,不知可行性。等楼主有了结果,再告诉大家怎么样做吧。 用xml来实现,思路考虑中…… uGain(uGain.org)所言极是。虽然不是很好的方法,但总想还是应该可以解决。主要是想知道如何解决的细节问题。感谢 lisoon((水翡草芥--突然想去扫街)) 提供思路,马上去试试看。to:kangqin(小康),这个日志文件,是应用程序生成的,还没有WEBTRENDS生成的那样复杂。应为大小不固定,所以想暂时用文本来操作。另:100w的文本,一条条读进来,在页面上显示一下,分个页,不搞其它的,应该还可以吧?不知具体的操作细节是什么?能提示一下么? to:joe25525(昨日§梦醒℃) 愿闻其详。 另:100w的文本,一条条读进来,在页面上显示一下,分个页,不搞其它的,应该还可以吧?不知具体的操作细节是什么?能提示一下么?用file()把文本赋到数组里,用下标来操作,就像数据库里的id一样。http://www.hr-salon.com/uGain/stat.php这是给一个人气还可以的论坛做的统计,用文本保存数据。不过13w条数据,已经很难操作,效率很低,所以在找到更高效的文本操作方法之前,还是不推荐用文本。 stat.php 这个是file()一次读入的么?然后,按加入时间倒序?file()的文本太大,一般都会报错(Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 79 bytes))。看来,除非是学习,否则用文本来处理,实在是没有什么意义。 uGain(uGain.org)兄对多条件组合查询,有什么好的建议? stat.php的代码,方便看一些么?不胜感激! <?php/* Easy Site Stat By uGain Document Format : 202.107.96.68→浙江省杭州市→http://www.ugain.org/stat.php→/index.php→MSIE 6.x→2004-11-11 23:50:13*/$filename='stat.uGain'; // name of the file where content saved$perpage='20'; // how many pieces display per page$fontcolor='#000000'; // font color$bordercolor='#CCCCCC'; // color of table's border$bgcolor='#FFFFFF'; // color of table's background$ippath='ip.txt'; // when $usesmile set to 1, u must set the path of imagesfunction WriteFile($filename, $content, $method='w'){ $fp=@fopen($filename, $method); @flock($fp, LOCK_EX); @fputs($fp, $content); fclose($fp);}function GBsubstr($string, $start, $length) { if(strlen($string)>$length){ $str=null; $len=$start+$length; for($i=$start;$i<$len;$i++){ if(ord(substr($string,$i,1))>0xa0){ $str.=substr($string,$i,2); $i++; }else{ $str.=substr($string,$i,1); } } return $str.'...'; }else{ return $string; }}function ShortDisplay($string, $start, $length){ if(strlen($string)<=$length) return $string; else { $str=GBsubstr($string, $start, $length); return '<div title="'.$string.'" onclick="if(this.innerHTML.replace(/[.]+/g,\'\').replace(/[^\x00-\xff]/g,\'uG\').length<='.($length+2).') this.innerHTML=\''.$string.'\'; else this.innerHTML=\''.$str.'\';">'.$str.'</div>'; }}function GetDomain($url){ return preg_replace('/http\:\/\/([a-zA-Z\.0-9\-]+)\/.*/i', '\\1', $url);}function ip2location($ip, $ip2locationarray){ if(ereg("^192[\.]+", $ip)) return "局域网IP"; if(ereg("^127[\.]+", $ip)) return "本机IP"; $formatip=null; $tmp=explode('.', $ip); for($i=0;$i<4;$i++){ $tmp[$i]=sprintf('%03d', $tmp[$i]); } $newip=join('.', $tmp); $a=0; $b=sizeof($ip2locationarray); while($a<$b-1) { $r=floor(($a+$b)/2); $ipfilevar=explode(",",$ip2locationarray[$r]); if(strcmp($newip,$ipfilevar[0])>=0&&strcmp($newip,$ipfilevar[1])<=0){ $location=trim($ipfilevar[2]).trim($ipfilevar[3]).trim($ipfilevar[4]).trim($ipfilevar[5]); break; } if(strcmp($newip,$ipfilevar[0])>0) $a=$r; else $b=$r; if(!($a<$b-1)) $location="未知地区"; } return $location;}function getbrower($str){ if(eregi("NetCaptor", $str)) return "NetCaptor"; elseif(eregi("MSIE 6", $str)) return "MSIE 6.x"; elseif(eregi("MSIE 5", $str)) return "MSIE 5.x"; elseif(eregi("MSIE 4", $str)) return "MSIE 4.x"; elseif(eregi("Netscape", $str)) return "Netscape"; elseif(eregi("Opera", $str)) return "Opera"; else return "other";}?><style type="text/css">a { font-size: 9pt; color: <?php echo $fontcolor; ?>; text-decoration: none}a:hover { font-family: "宋体"; font-size: 9pt; color: #FF2200; text-decoration: none}a:visited { font-family: "宋体"; font-size: 9pt; color: <?php echo $fontcolor; ?>; text-decoration: none}</style> <?php$listmenuarray=array('ip', 'location', 'from', 'visit', 'brower');$statstr='<tr bgcolor="'.$bgcolor.'"><td align="right"><b>统计:</b></td><td colspan="6"><a href="'.$PHP_SELF.'?section=stat¶m=ip">按IP</a> <a href="'.$PHP_SELF.'?section=stat¶m=location">按地区</a> <a href="'.$PHP_SELF.'?section=stat¶m=from">按来源</a> <a href="'.$PHP_SELF.'?section=stat¶m=visit">按访问</a> <a href="'.$PHP_SELF.'?section=stat¶m=brower">按浏览器</a> <a href="'.$PHP_SELF.'?section=stat¶m=year">按时间(年)</a> <a href="'.$PHP_SELF.'?section=stat¶m=month">按时间(月)</a> <a href="'.$PHP_SELF.'?section=stat¶m=date">按时间(天)</a> <a href="'.$PHP_SELF.'?section=stat¶m=hour">按时间(小时)</a> <div align="right"><b><a href="'.$PHP_SELF.'?section=list">查看统计列表</a></b></div></td></tr>';if($section=='list'){ $href=$PHP_SELF.'?section='.$section; if($orderby) $href.='&orderby='.$orderby; $file=@file($filename)?@file($filename):array(); foreach($listmenuarray as $kk=>$vv){ if($orderby==$vv){ $file2=array_merge($file, array()); foreach($file2 as $k=>$v){ if($file2[$k]){ $tmp=explode('→', $file2[$k]); $tmp2[$k]=$tmp[$kk]; } } asort($tmp2); unset($file); foreach($tmp2 as $k=>$v){ $file[]=$file2[$k]; } } } $totalpage=ceil(count($file)/$perpage); if(!$page or $page<1) $page=1; if($page>$totalpage) $page=$totalpage; $cnt=count($file)-($page-1)*$perpage; $cnt2=count($file)-$page*$perpage; echo '<table border="0" width="80%" align="center" cellpadding="4" cellspacing="1" bgcolor="'.$bordercolor.'" style="color:'.$fontcolor.';font-size:9pt">'; echo $statstr; echo '<tr bgcolor="'.$bgcolor.'" align="center"> <td><b>序号</b></td> <td><b><a href="'.$href.'&orderby=ip">IP</a></b></td> <td><b><a href="'.$href.'&orderby=location">地区</a></b></td> <td><b><a href="'.$href.'&orderby=from">来源</a></b></td> <td><b><a href="'.$href.'&orderby=visit">访问</a></b></td> <td><b><a href="'.$href.'&orderby=ip">浏览器</a></b></td> <td><b><a href="'.$href.'&orderby=time">时间</a></b></td> </tr>'; for($i=$cnt;$i>$cnt2;$i--){ if($file[$i]){ $tmp=explode('→', $file[$i]); echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$tmp[0].'</td> <td>'.$tmp[1].'</td> <td>'.ShortDisplay($tmp[2], 0, 20).'</td> <td>'.ShortDisplay($tmp[3], 0, 25).'</td> <td>'.$tmp[4].'</td> <td>'.$tmp[5].'</td></tr>'; } } echo '<tr bgcolor="'.$bgcolor.'"><td colspan="7" align="right">'; if($page>1) echo '<a href="'.$href.'&page='.($page-1).'">上一页</a> '; if(count($file)>$perpage){ echo '<a href="'.$href.'&page='.($page+1).'">下一页</a> '; } echo '</td></tr>'; echo '<tr bgcolor="'.$bgcolor.'"><td colspan="7" align="center">统计开始时间:'.(substr($file[0], strrpos($file[0], '→')+2)).' 当前时间:'.date('Y-m-d H:i:s').'</td></tr>'; echo '</table>';}elseif($section=='stat'){ $file=@file($filename)?@file($filename):array(); echo '<table border="0" width="80%" align="center" cellpadding="4" cellspacing="1" bgcolor="'.$bordercolor.'" style="color:'.$fontcolor.';font-size:9pt">'; echo $statstr; echo '<tr bgcolor="'.$bgcolor.'" align="center"> <td><b>序号</b></td> <td><b>统计值</b></td> <td><b>统计次数</b></td> <td><b>百分比</b></td> <td width="400"><b>图示</b></td> </tr>'; foreach($listmenuarray as $kk=>$vv){ if($param==$vv){ foreach($file as $k=>$v){ if($file[$k]){ $tmp=explode('→', $file[$k]); if(@in_array($tmp[$kk], @array_flip($tmp2))) $tmp2[$tmp[$kk]]++; else $tmp2[$tmp[$kk]]=1; } } $total=array_sum($tmp2); ksort($tmp2); $i=1; foreach($tmp2 as $k=>$v){ echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.($k?$k:'无').'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>'; $i++; } } } if($param=='year' or $param=='month' or $param=='date' or $param=='hour'){ foreach($file as $k=>$v){ if($file[$k]){ $tmp=explode('→', $file[$k]); $year=substr($tmp[5], 0, 4); $month=substr($tmp[5], 0, 7); $date=substr($tmp[5], 0, 10); $hour=substr($tmp[5], 0, 13); if(@in_array($year, @array_flip($tmp2))) $tmp2[$year]++; else $tmp2[$year]=1; if(@in_array($month, @array_flip($tmp3))) $tmp3[$month]++; else $tmp3[$month]=1; if(@in_array($date, @array_flip($tmp4)) and substr($date, 0, 7)==date('Y-m')) $tmp4[$date]++; elseif(substr($date, 0, 7)==date('Y-m')) $tmp4[$date]=1; if(@in_array($hour, @array_flip($tmp5)) and substr($hour, 0, 10)==date('Y-m-d')) $tmp5[$hour]++; elseif(substr($hour, 0, 10)==date('Y-m-d')) $tmp5[$hour]=1; } } if($param=='year'){ $total=array_sum($tmp2); ksort($tmp2); $i=1; foreach($tmp2 as $k=>$v){ echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>'; $i++; } } if($param=='month'){ $total=array_sum($tmp3); ksort($tmp3); $i=1; foreach($tmp3 as $k=>$v){ echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>'; $i++; } } if($param=='date'){ $total=array_sum($tmp4); ksort($tmp4); $i=1; foreach($tmp4 as $k=>$v){ echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>'; $i++; } } if($param=='hour'){ $total=array_sum($tmp5); ksort($tmp5); $i=1; foreach($tmp5 as $k=>$v){ echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td> <td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>'; $i++; } } } echo '</table>';}else{ $file=@file($filename)?@file($filename):array(); $ip2locationarray=@file($ippath)?@file($ippath):array(); $ip=$REMOTE_ADDR; $location=ip2location($ip, $ip2locationarray); $from=GetDomain($HTTP_REFERER); $visit=$PHP_SELF; $brower=getbrower($HTTP_USER_AGENT); $time=date('Y-m-d H:i:s'); $content=$ip.'→'.$location.'→'.$from.'→'.$visit.'→'.$brower.'→'.$time."\n"; WriteFile($filename, $content, 'a+'); echo '<a href="'.$PHP_SELF.'?section=list">查看统计列表</a>';}?> 求助写一段小程序 jquery ajax提交中文出现乱码? 我的页面为什么不缓存?我想让网站不联网的情况下也能打开首页,我应该怎么做? 提问:php写的socket服务器端程序,性能、效率跟稳定性如何? 新手 问个取URI值的方法 马上给分!!! 本人菜鸟 请教大家 十万火急 一个数据库导入的问题 请指点谢谢 哪位有好的php分页程序? 这种效果是怎么弄的 curl 访问地址 跟浏览器访问地址返回数据不一样 PHP里面异常捕获 我想实现一个用户用用户名test登陆系统后,如果还有人又用这个用户名登陆系统的话,就提示,我应该怎么做呢 域名搜索问题
记得使用WEBTRENDS分析WEB SERVER LOG的时候,好象它都会先生成一个自有格式的数据库,然后再读这个数据库来做分析报告,不知道我记得对不对。直接文本分析的效率……100W条……汗……
$format=A20A10;
pack($format,$data1,$data2)
-------------------------------
读取出来再unpack()
$format=A20data1/A10data2;
$mydata=unpack($format,$yourdata)
echo $mydata['data1']
echo $mydata['data2']
这样会不会操作简单一点呢。
又或是今天第一个人访问时,把数据放进临时表,然后所有人再在这个临时表上操作。
只是提供个思路,不知可行性。等楼主有了结果,再告诉大家怎么样做吧。
主要是想知道如何解决的细节问题。感谢 lisoon((水翡草芥--突然想去扫街)) 提供思路,马上去试试看。to:kangqin(小康),这个日志文件,是应用程序生成的,还没有WEBTRENDS生成的那样复杂。应为大小不固定,所以想暂时用文本来操作。
另:100w的文本,一条条读进来,在页面上显示一下,分个页,不搞其它的,应该还可以吧?不知具体的操作细节是什么?能提示一下么?
这是给一个人气还可以的论坛做的统计,用文本保存数据。
不过13w条数据,已经很难操作,效率很低,所以在找到更高效的文本操作方法之前,还是不推荐用文本。
/*
Easy Site Stat By uGain
Document Format : 202.107.96.68→浙江省杭州市→http://www.ugain.org/stat.php→/index.php→MSIE 6.x→2004-11-11 23:50:13
*/$filename='stat.uGain'; // name of the file where content saved
$perpage='20'; // how many pieces display per page
$fontcolor='#000000'; // font color
$bordercolor='#CCCCCC'; // color of table's border
$bgcolor='#FFFFFF'; // color of table's background
$ippath='ip.txt'; // when $usesmile set to 1, u must set the path of imagesfunction WriteFile($filename, $content, $method='w'){
$fp=@fopen($filename, $method);
@flock($fp, LOCK_EX);
@fputs($fp, $content);
fclose($fp);
}
function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}
function ShortDisplay($string, $start, $length){
if(strlen($string)<=$length) return $string;
else {
$str=GBsubstr($string, $start, $length);
return '<div title="'.$string.'" onclick="if(this.innerHTML.replace(/[.]+/g,\'\').replace(/[^\x00-\xff]/g,\'uG\').length<='.($length+2).') this.innerHTML=\''.$string.'\'; else this.innerHTML=\''.$str.'\';">'.$str.'</div>';
}
}
function GetDomain($url){
return preg_replace('/http\:\/\/([a-zA-Z\.0-9\-]+)\/.*/i', '\\1', $url);
}
function ip2location($ip, $ip2locationarray){
if(ereg("^192[\.]+", $ip)) return "局域网IP";
if(ereg("^127[\.]+", $ip)) return "本机IP";
$formatip=null;
$tmp=explode('.', $ip);
for($i=0;$i<4;$i++){
$tmp[$i]=sprintf('%03d', $tmp[$i]);
}
$newip=join('.', $tmp);
$a=0;
$b=sizeof($ip2locationarray);
while($a<$b-1) {
$r=floor(($a+$b)/2);
$ipfilevar=explode(",",$ip2locationarray[$r]);
if(strcmp($newip,$ipfilevar[0])>=0&&strcmp($newip,$ipfilevar[1])<=0){
$location=trim($ipfilevar[2]).trim($ipfilevar[3]).trim($ipfilevar[4]).trim($ipfilevar[5]);
break;
}
if(strcmp($newip,$ipfilevar[0])>0) $a=$r;
else $b=$r;
if(!($a<$b-1)) $location="未知地区";
}
return $location;
}
function getbrower($str){
if(eregi("NetCaptor", $str)) return "NetCaptor";
elseif(eregi("MSIE 6", $str)) return "MSIE 6.x";
elseif(eregi("MSIE 5", $str)) return "MSIE 5.x";
elseif(eregi("MSIE 4", $str)) return "MSIE 4.x";
elseif(eregi("Netscape", $str)) return "Netscape";
elseif(eregi("Opera", $str)) return "Opera";
else return "other";
}
?>
<style type="text/css">
a { font-size: 9pt; color: <?php echo $fontcolor; ?>; text-decoration: none}
a:hover { font-family: "宋体"; font-size: 9pt; color: #FF2200; text-decoration: none}
a:visited { font-family: "宋体"; font-size: 9pt; color: <?php echo $fontcolor; ?>; text-decoration: none}
</style>
$listmenuarray=array('ip', 'location', 'from', 'visit', 'brower');
$statstr='<tr bgcolor="'.$bgcolor.'"><td align="right"><b>统计:</b></td><td colspan="6"><a href="'.$PHP_SELF.'?section=stat¶m=ip">按IP</a> <a href="'.$PHP_SELF.'?section=stat¶m=location">按地区</a> <a href="'.$PHP_SELF.'?section=stat¶m=from">按来源</a> <a href="'.$PHP_SELF.'?section=stat¶m=visit">按访问</a> <a href="'.$PHP_SELF.'?section=stat¶m=brower">按浏览器</a> <a href="'.$PHP_SELF.'?section=stat¶m=year">按时间(年)</a> <a href="'.$PHP_SELF.'?section=stat¶m=month">按时间(月)</a> <a href="'.$PHP_SELF.'?section=stat¶m=date">按时间(天)</a> <a href="'.$PHP_SELF.'?section=stat¶m=hour">按时间(小时)</a> <div align="right"><b><a href="'.$PHP_SELF.'?section=list">查看统计列表</a></b></div></td></tr>';
if($section=='list'){
$href=$PHP_SELF.'?section='.$section;
if($orderby) $href.='&orderby='.$orderby;
$file=@file($filename)?@file($filename):array();
foreach($listmenuarray as $kk=>$vv){
if($orderby==$vv){
$file2=array_merge($file, array());
foreach($file2 as $k=>$v){
if($file2[$k]){
$tmp=explode('→', $file2[$k]);
$tmp2[$k]=$tmp[$kk];
}
}
asort($tmp2);
unset($file);
foreach($tmp2 as $k=>$v){
$file[]=$file2[$k];
}
}
}
$totalpage=ceil(count($file)/$perpage);
if(!$page or $page<1) $page=1;
if($page>$totalpage) $page=$totalpage;
$cnt=count($file)-($page-1)*$perpage;
$cnt2=count($file)-$page*$perpage;
echo '<table border="0" width="80%" align="center" cellpadding="4" cellspacing="1" bgcolor="'.$bordercolor.'" style="color:'.$fontcolor.';font-size:9pt">';
echo $statstr;
echo '<tr bgcolor="'.$bgcolor.'" align="center"> <td><b>序号</b></td> <td><b><a href="'.$href.'&orderby=ip">IP</a></b></td> <td><b><a href="'.$href.'&orderby=location">地区</a></b></td> <td><b><a href="'.$href.'&orderby=from">来源</a></b></td> <td><b><a href="'.$href.'&orderby=visit">访问</a></b></td> <td><b><a href="'.$href.'&orderby=ip">浏览器</a></b></td> <td><b><a href="'.$href.'&orderby=time">时间</a></b></td> </tr>';
for($i=$cnt;$i>$cnt2;$i--){
if($file[$i]){
$tmp=explode('→', $file[$i]);
echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$tmp[0].'</td> <td>'.$tmp[1].'</td> <td>'.ShortDisplay($tmp[2], 0, 20).'</td> <td>'.ShortDisplay($tmp[3], 0, 25).'</td> <td>'.$tmp[4].'</td> <td>'.$tmp[5].'</td></tr>';
}
}
echo '<tr bgcolor="'.$bgcolor.'"><td colspan="7" align="right">';
if($page>1) echo '<a href="'.$href.'&page='.($page-1).'">上一页</a> ';
if(count($file)>$perpage){
echo '<a href="'.$href.'&page='.($page+1).'">下一页</a> ';
}
echo '</td></tr>';
echo '<tr bgcolor="'.$bgcolor.'"><td colspan="7" align="center">统计开始时间:'.(substr($file[0], strrpos($file[0], '→')+2)).' 当前时间:'.date('Y-m-d H:i:s').'</td></tr>';
echo '</table>';
}elseif($section=='stat'){
$file=@file($filename)?@file($filename):array();
echo '<table border="0" width="80%" align="center" cellpadding="4" cellspacing="1" bgcolor="'.$bordercolor.'" style="color:'.$fontcolor.';font-size:9pt">';
echo $statstr;
echo '<tr bgcolor="'.$bgcolor.'" align="center"> <td><b>序号</b></td> <td><b>统计值</b></td> <td><b>统计次数</b></td> <td><b>百分比</b></td> <td width="400"><b>图示</b></td> </tr>';
foreach($listmenuarray as $kk=>$vv){
if($param==$vv){
foreach($file as $k=>$v){
if($file[$k]){
$tmp=explode('→', $file[$k]);
if(@in_array($tmp[$kk], @array_flip($tmp2))) $tmp2[$tmp[$kk]]++;
else $tmp2[$tmp[$kk]]=1;
}
}
$total=array_sum($tmp2);
ksort($tmp2);
$i=1;
foreach($tmp2 as $k=>$v){
echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.($k?$k:'无').'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>';
$i++;
}
}
}
if($param=='year' or $param=='month' or $param=='date' or $param=='hour'){
foreach($file as $k=>$v){
if($file[$k]){
$tmp=explode('→', $file[$k]);
$year=substr($tmp[5], 0, 4);
$month=substr($tmp[5], 0, 7);
$date=substr($tmp[5], 0, 10);
$hour=substr($tmp[5], 0, 13);
if(@in_array($year, @array_flip($tmp2))) $tmp2[$year]++;
else $tmp2[$year]=1;
if(@in_array($month, @array_flip($tmp3))) $tmp3[$month]++;
else $tmp3[$month]=1;
if(@in_array($date, @array_flip($tmp4)) and substr($date, 0, 7)==date('Y-m')) $tmp4[$date]++;
elseif(substr($date, 0, 7)==date('Y-m')) $tmp4[$date]=1;
if(@in_array($hour, @array_flip($tmp5)) and substr($hour, 0, 10)==date('Y-m-d')) $tmp5[$hour]++;
elseif(substr($hour, 0, 10)==date('Y-m-d')) $tmp5[$hour]=1;
}
}
if($param=='year'){
$total=array_sum($tmp2);
ksort($tmp2);
$i=1;
foreach($tmp2 as $k=>$v){
echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>';
$i++;
}
}
if($param=='month'){
$total=array_sum($tmp3);
ksort($tmp3);
$i=1;
foreach($tmp3 as $k=>$v){
echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>';
$i++;
}
}
if($param=='date'){
$total=array_sum($tmp4);
ksort($tmp4);
$i=1;
foreach($tmp4 as $k=>$v){
echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td><td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>';
$i++;
}
}
if($param=='hour'){
$total=array_sum($tmp5);
ksort($tmp5);
$i=1;
foreach($tmp5 as $k=>$v){
echo '<tr bgcolor="'.$bgcolor.'"> <td>'.$i.'</td> <td>'.$k.'</td> <td>'.$v.'</td> <td>'.round($v*100/$total, 2).'%</td> <td> <hr color="red" size="5" align="left" width="'.($v*400/$total).'"></td></tr>';
$i++;
}
}
}
echo '</table>';
}else{
$file=@file($filename)?@file($filename):array();
$ip2locationarray=@file($ippath)?@file($ippath):array();
$ip=$REMOTE_ADDR;
$location=ip2location($ip, $ip2locationarray);
$from=GetDomain($HTTP_REFERER);
$visit=$PHP_SELF;
$brower=getbrower($HTTP_USER_AGENT);
$time=date('Y-m-d H:i:s');
$content=$ip.'→'.$location.'→'.$from.'→'.$visit.'→'.$brower.'→'.$time."\n";
WriteFile($filename, $content, 'a+');
echo '<a href="'.$PHP_SELF.'?section=list">查看统计列表</a>';
}
?>