• 注册
  • 代码教程 代码教程 关注:6 内容:36

    PHP纯文件做的广告统计数据记录,不需要创建数据表,自动更新广告数据

  • 查看作者
  • 打赏作者
  • 9 渡劫 后期

    PHP纯文件做的广告统计数据记录,不需要创建数据表,可记录:天,周,月,年。如下图:

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

    请登录之后再进行评论

    登录
  • 任务
  • 偏好设置
  • 到底部
  • 帖子间隔 侧栏位置: