PHP纯文件做的广告统计数据记录,不需要创建数据表,可记录:天,周,月,年。如下图:
这是一个很简单的广告点击统计功能,因为想着简约就没弄广告历史点击数据,更新广告点击数据的时间为:
每天:0点之后——>删除昨日文件——>点击广告会创建新文件(删除时间为后1天);
每周:周一0点之后——>删除昨日文件——>点击广告会创建新文件(删除时间为后7天);
每月:1号0点之后——>删除昨日文件——>点击广告会创建新文件(删除时间为后30天);
每年:1月1号0点之后——>删除昨日文件——>点击广告会创建新文件(删除时间为后365天);
实现思路:页面点击广告->跳转页(PHP读取文本->点击数+1存入文本)->广告页面
创建广告点击文件(只有一天的数据记录,可自行添加更多时间)
<?php
$counter_dir = "ad_click_count";//广告点击统计——存放目录
$filename1 = $counter_dir."/1.txt";//今日——广告点击统计——文件路径
$filename7 = $counter_dir."/7.txt";//本周——广告点击统计——文件路径
$filename30 = $counter_dir."/30.txt";//本月——广告点击统计——文件路径
$filename365 = $counter_dir."/365.txt";//今年——广告点击统计——文件路径
if(!is_dir($counter_dir)){
try{
mkdir($counter_dir,0777,true);//检查统计器目录,不存在则创建
}catch(Exception $e){
echo $e->getMessage();
}
}
if(!file_exists($filename1) && !file_exists($filename7) && !file_exists($filename30) && !file_exists($filename365)){//如果统计文件不存在,那么说明这个文档第一次被访问
$counter1=0; $counter7=0; $counter30=0; $counter365=0;
}else{
$counter1 = intval(file_get_contents($filename1));//读取访问次数——1天
$counter7 = intval(file_get_contents($filename7));//读取访问次数——7天
$counter30 = intval(file_get_contents($filename30));//读取访问次数——30天
$counter365 = intval(file_get_contents($filename365));//读取访问次数——30天
}
$counter1 += 1;//访问数据+1
$counter7 += 1;
$counter30 += 1;
$counter365 += 1;
file_put_contents($filename1,$counter1);//写入统计数据——1天
file_put_contents($filename7,$counter7);//写入统计数据——7天
file_put_contents($filename30,$counter30);//写入统计数据——30天
file_put_contents($filename365,$counter365);//写入统计数据——365天
//每天——文件创建时间
$file_found_1 = file($filename1);
$file_found_1[$line] = "\n".date('Y-m-d',strtotime("+1 day"));
file_put_contents($filename1, implode($file_found_1));
//每周——文件创建时间
$week=array("日","一","二","三","四","五","六");
if("星期".$week[date("w")]=="星期一"){
$file_found_7 = file($filename7);
$file_found_7[$line] = "\n".date('Y-m-d',strtotime("+7 day"));
file_put_contents($filename7, implode($file_found_7));
}
//每月——文件创建时间
$file_found_30 = file($filename30);
$file_found_30[$line] = "\n".date('Y-m',strtotime("+30 day"));
file_put_contents($filename30, implode($file_found_30));
//每年——文件创建时间
$file_found_365 = file($filename365);
$file_found_365[$line] = "\n".date('Y',strtotime("+365 day"));
file_put_contents($filename365, implode($file_found_365));
//页面跳转
$ad_url = $_GET['id'];
header("Location:".$ad_url);
删除/更新 广告点击文件(有今天,本周,本月,本年)
将下面这个调用到WordPress头部函数钩子,就实现更新了…,可惜不会弄php计时器
<?php
//获取文件修改时间
$file_name_1= WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/1.txt";
$file_name_7= WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/7.txt";
$file_name_30=WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/30.txt";
$file_name_365=WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/365.txt";
//创建一个函数,获取指定行内容
function get_Line($file, $line, $length = 4096){
$returnTxt = null; // 初始化返回
$i = 1; // 行数
$handle = @fopen($file, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, $length);
if($line == $i) $returnTxt = $buffer;
$i++;
}
fclose($handle);
}
return $returnTxt;
}
$file_1_1 = get_Line($file_name_1,2);//读取文件第2行内容————【文件路径$file,行数$line,指定行返回内容长度$length】
$file_7_1 = get_Line($file_name_7,2);
$file_30_1 = get_Line($file_name_30,2);
$file_365_1 = get_Line($file_name_365,2);
//【今日】广告点击数据删除时间
if(date("Y-m-d") >= $file_1_1){//当前时间 >= 删除时间
if(file_exists($file_name_1)){unlink($file_name_1);}
}
//【每周】广告点击数据删除时间
$week=array("日","一","二","三","四","五","六");
if(date("Y-m-d") >= $file_7_1 && $week[date("w")] == "一" ){//当前时间 >= 删除时间 且 星期一
if(file_exists($file_name_7)){unlink($file_name_7);}
}
//【每月】1号广告点击数据删除
if(date("Y-m") >= $file_30_1){//当前时间 >= 删除时间
if(file_exists($file_name_30)){unlink($file_name_30);}
}
//【今年】1月1号广告点击数据删除
if(date("Y") >= $file_365_1){//当前时间 >= 删除时间
if(file_exists($file_name_365)){unlink($file_name_365);}
}
/*
echo "测试时间:<br>日:".$file_1_1."<br>周:".$file_7_1."<br>月:".$file_30_1."<br>年:".$file_365_1;
echo "<hr>";
echo "5555现在当前时间0:".date("YmdHis");
echo "<hr>";
echo "5555文件修改时间0:".$modify_time;
echo "<br>";
echo "55文件删除时间1天:<br>当前:".date("Y-m-d")."<br>删除:".$file_1_1;
echo "<br>";
echo "55文件删除时间7天:<br>当前:".date("Y-m-d")."<br>删除:".$file_7_1;
echo "<br>";
echo "5文件删除时间30天:<br>当前:".date("Y-m")."<br>删除:".$file_30_1;
echo "<br>";
echo "文件删除时间365天:<br>当前:".date("Y")."<br>删除:".$file_365_1;
echo "<hr>";
echo "测试:".date('YmdHis',strtotime("{$modify_time} +1 day"));
echo "<hr>";
echo "星期:"."星期".$week[date("w")];
echo "<hr>";
if(date("Y-m") > $file_30_1){
echo date("Y-m-d").">".$file_1_1;
}else{
echo date("Y-m-d")."<".$file_1_1;
}
*/
后台广告点击数据查看(直接读取txt文件内的数值)
//今日点击
$filename1=WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/1.txt";
if(file_exists($filename1)){$ad_click_1=intval(file_get_contents($filename1));}else{$ad_click_1="0";}//判断文件是否存在,如果不存在则返回0
//本周点击
$filename7=WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/7.txt";
if(file_exists($filename7)){$ad_click_7=intval(file_get_contents($filename7));}else{$ad_click_7="0";}
//本月点击
$filename30=WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/30.txt";
if(file_exists($filename30)){$ad_click_30=intval(file_get_contents($filename30));}else{$ad_click_30="0";}
//今年点击
$filename365=WP_PLUGIN_DIR."/LT1_LS_AD/click/ad_click_count/365.txt";
if(file_exists($filename365)){$ad_click_365=intval(file_get_contents($filename365));}else{$ad_click_365="0";}
注意文件路径都是服务器绝对路径!
我自己做的某WordPress插件用到的这个功能,因此写在这记录一下,小白码的代码,望大佬提出改进~~~
隐藏内容需要登录才可以看见
登录






