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插件用到的这个功能,因此写在这记录一下,小白码的代码,望大佬提出改进~~~