Просмотр файла template/counters.php

Размер файла: 8.23Kb
<?php
// mod by Golem http://veplog.ru

//------------------------- Функция подсчета посетителей -----------------------//
$sitetime=time()+($config_timeclocks*3600);

$maxonline="250"; #сколько онлайн записей хранить
$file_online=file(BASEDIR."local/online.dat");
$ion = count($file_online);

if ($ion>=$maxonline) {
$fpon=fopen(BASEDIR."local/online.dat","w");
if($fpon){
flock ($fpon,LOCK_EX);
unset($file_online[0],$file_online[1]);
fputs($fpon, implode("",$file_online));
flock ($fpon,LOCK_UN);
fclose($fpon);}}


$oftime=$sitetime-600;
$den=date("d",$sitetime);
$hour=date("H",$sitetime);

$found = 0;
$user = "";
$arrtimehour=mktime(date("H",$sitetime), 0, 0, date("m",$sitetime), date("d",$sitetime), date("Y",$sitetime));
$arrtimeday=mktime(0, 0, 0, date("m",$sitetime), date("d",$sitetime), date("Y",$sitetime));

$f = fopen(BASEDIR."local/online.dat","r+");
if($f){
flock($f,LOCK_EX);
while (!feof($f))
{
$user[] = fgets($f,65536);
}
fseek($f,0,SEEK_SET);
ftruncate($f,0);

foreach($user as $val) {

$savesdata = explode("#",$val);
if(isset($savesdata[1]) && $ip==$savesdata[1]){$found = 1;}
if(isset($savesdata[2]) && $savesdata[2]==$log && $savesdata[2]!=""){$savesdata[1]=$ip;}
if($savesdata[0]>$oftime && $ip!=$savesdata[1] && $savesdata[1]!=""){
fputs($f,$savesdata[0]."#".$savesdata[1]."#".$savesdata[2]."#".$savesdata[3]."#\r\n");
}
}

fputs($f,$sitetime."#".$ip."#".$log."#".$brow."#\r\n");

fflush($f);
flock($f,LOCK_UN);
fclose ($f);
}

//--------------------------------------------------------------------//
//                           Запись хостов
//--------------------------------------------------------------------//
if($found==0){
$fp=fopen(BASEDIR."local/datacounter/host.dat","a+");
if($fp){
flock($fp,LOCK_EX);
while (!feof($fp))
{
$arcounts[] = fgets($fp,100);
}
$count=explode("#",$arcounts[0]);

//----------------------- Статистика по 24 часам (хосты) ---------------------------------//
if($count[3]!=$hour){

$ufilecount = file(BASEDIR."local/datacounter/24_host.dat");
$udatacount = explode("|",$ufilecount[0]);

if($udatacount[0]!=""){
for($f=0;$f<24;$f++){
$udatadays = explode("-",$udatacount[0]);
$newtime=$udatadays[0]+7200;
$newzaptime=$udatadays[0]+3600;

if($sitetime>$newtime){
array_unshift($udatacount,$newzaptime.'-0');
}}}

array_unshift($udatacount,$arrtimehour.'-'.$count[4]);

for ($uc=0; $uc<24; $uc++){
$utextcount.=$udatacount[$uc].'|';}

if($utextcount!=""){
$fpcount=fopen(BASEDIR."local/datacounter/24_host.dat","a+");
flock($fpcount,LOCK_EX);
ftruncate($fpcount,0);
fputs($fpcount,$utextcount);
fflush($fpcount);
flock($fpcount,LOCK_UN);
fclose($fpcount);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/24_host.dat", 0666);
}
$count[3]=$hour; $count[4]=0;
}



if($count[0]!=$den){
//------------------------ Статистика по 31 дню (хосты) --------------------------------//
$cufilecount = file(BASEDIR."local/datacounter/31_host.dat");
$cudatacount = explode("|",$cufilecount[0]);

if($cudatacount[0]!=""){
for($f=0;$f<31;$f++){
$cudatadays = explode("-",$cudatacount[0]);
$cnewtime=$cudatadays[0]+172800;
$cnewzaptime=$cudatadays[0]+86400;

if($sitetime>$cnewtime){
array_unshift($cudatacount,$cnewzaptime.'-0');
}}}


array_unshift($cudatacount,$arrtimeday.'-'.$count[1]);


for ($cuc=0; $cuc<31; $cuc++){
$cutextcount.=$cudatacount[$cuc].'|';}

if($cutextcount!=""){
$cfpcount=fopen(BASEDIR."local/datacounter/31_host.dat","a+");
flock($cfpcount,LOCK_EX);
ftruncate($cfpcount,0);
fputs($cfpcount,$cutextcount);
fflush($cfpcount);
flock($cfpcount,LOCK_UN);
fclose($cfpcount);
@chmod ($cfpcount, 0666);
@chmod (BASEDIR."local/datacounter/31_host.dat", 0666);
}
$count[0]=$den; $count[1]=0;
}



//------------------------  Каждое посещение --------------------------------//
$count[1]++; $count[2]++; $count[4]++;
$zapis=$count[0].'#'.$count[1].'#'.$count[2].'#'.$count[3].'#'.$count[4].'#';
ftruncate($fp,0);
fputs($fp,$zapis);
fflush($fp);
flock($fp,LOCK_UN);
fclose($fp);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/host.dat", 0666);
}}else{


//--------------------------------------------------------------------//
//                           Запись хитов
//--------------------------------------------------------------------//
$fp=fopen(BASEDIR."local/datacounter/hits.dat","a+");
if($fp){
flock($fp,LOCK_EX);
while (!feof($fp))
{
$arcounts[] = fgets($fp,100);
}
$count=explode("#",$arcounts[0]);




//----------------------- Статистика по 24 часам (хиты) ---------------------------------//
if($count[3]!=$hour){

$ufilecount = file(BASEDIR."local/datacounter/24_hits.dat");
$udatacount = explode("|",$ufilecount[0]);

if($udatacount[0]!=""){
for($f=0;$f<24;$f++){
$udatadays = explode("-",$udatacount[0]);
$newtime=$udatadays[0]+7200;
$newzaptime=$udatadays[0]+3600;

if($sitetime>$newtime){
array_unshift($udatacount,$newzaptime.'-0');
}}}


array_unshift($udatacount,$arrtimehour.'-'.$count[4]);

for ($uc=0; $uc<24; $uc++){
$utextcount.=$udatacount[$uc].'|';}

if($utextcount!=""){
$fpcount=fopen(BASEDIR."local/datacounter/24_hits.dat","a+");
flock($fpcount,LOCK_EX);
ftruncate($fpcount,0);
fputs($fpcount,$utextcount);
fflush($fpcount);
flock($fpcount,LOCK_UN);
fclose($fpcount);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/24_hits.dat", 0666);
}
$count[3]=$hour; $count[4]=0;
}





if($count[0]!=$den){
//------------------------ Статистика по 31 дню (хиты) --------------------------------//
$cufilecount = file(BASEDIR."local/datacounter/31_hits.dat");
$cudatacount = explode("|",$cufilecount[0]);

if($cudatacount[0]!=""){
for($f=0;$f<31;$f++){
$cudatadays = explode("-",$cudatacount[0]);
$cnewtime=$cudatadays[0]+172800;
$cnewzaptime=$cudatadays[0]+86400;

if($sitetime>$cnewtime){
array_unshift($cudatacount,$cnewzaptime.'-0');
}}}


array_unshift($cudatacount,$arrtimeday.'-'.$count[1]);


for ($cuc=0; $cuc<31; $cuc++){
$cutextcount.=$cudatacount[$cuc].'|';}

if($cutextcount!=""){
$cfpcount=fopen(BASEDIR."local/datacounter/31_hits.dat","a+");
flock($cfpcount,LOCK_EX);
ftruncate($cfpcount,0);
fputs($cfpcount,$cutextcount);
fflush($cfpcount);
flock($cfpcount,LOCK_UN);
fclose($cfpcount);
@chmod ($cfpcount, 0666);
@chmod (BASEDIR."local/datacounter/31_hits.dat", 0666);
}
$count[0]=$den; $count[1]=0;
}


//----------------------- Каждое посещение ----------------------------//
$count[1]++; $count[2]++; $count[4]++;
$zapis=$count[0].'#'.$count[1].'#'.$count[2].'#'.$count[3].'#'.$count[4].'#';
ftruncate($fp,0);
fputs($fp,$zapis);
fflush($fp);
flock($fp,LOCK_UN);
fclose($fp);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/hits.dat", 0666);
}
}

//-------------------- Вывод статистики ------------------------------//
$str = file_get_contents(BASEDIR."local/online.dat");
$substr_count = substr_count($str,"##");
$lines=file(BASEDIR."local/online.dat");
$counter_online=count($lines);
$counter_reg=$counter_online-$substr_count;

$count=file(BASEDIR."local/datacounter/host.dat");
$count =explode("#",$count[0]);
$counter_host=$count[1];
$counter_all=$count[2];

$hcount=file(BASEDIR."local/datacounter/hits.dat");
$hcount =explode("#",$hcount[0]);
$counter_hits=$hcount[1];
$counter_allhits=$hcount[2];

echo'Онлайн: <a href="'.BASEDIR.'pages/onlinewho.php">'.$counter_online.'</a><br>';

if($config_counters=="1"){
if($config_incount=="1"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_host.' | '.$counter_all.'</a><br>';}
if($config_incount=="2"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_hits.' | '.$counter_allhits.'</a><br>';}
if($config_incount=="3"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_host.' | '.$counter_hits.'</a><br>';}
if($config_incount=="4"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_all.' | '.$counter_allhits.'</a><br>';}
if($config_incount=="5"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'"><img src="'.BASEDIR.'gallery/count.php" alt=""></a><br>';}
}
?>