分析埋点技术并用JS+PHP简单实现(附代码)

PHP技术交流QQ群:490910618
一. 埋点是什么意思?

        埋点:白话就是页面上埋下一段代码,通过该代码主动向服务器提交本页面相关信息等一系列数据。

        作用:用来采集网站数据,以便进行数据分析。(这个数据采集起来有很多,比如哪个ip几点在哪点了哪个页面等等)

二. 埋点怎么做?

        埋点有2种方式:

                1. 用大牛平台的(百度/谷歌/友盟/腾讯)都有非常成熟的数据采集分析平台,功能强大,就是一个事,花钱。

                2. 自己写  这个就完全自己动手丰衣足食了,我写了一下,代码量不是很多,挺简单的,如果网站对分析功能要求的不是非常高,完全可以自己写。如果想手写,那就继续往下读,想用现成的可以咨询一下相关平台的客服,客服咨询售后什么的都非常到位,毕竟他们除了卖产品,卖的也算服务,毕竟平台多,为什么有的平台能一枝独秀呢对不对,说到底还是服务到位。

三. 埋点实现原理

        用户点击页面——埋点请求加载一个js文件(该js文件最主要的就是一个伪图片,src带着参数去请求服务器的php文件,php文件中的代码是对收集上来的数据进行分析或者存储,这里我先生成了log文件,之后批量存储到数据库中)这里用伪文件的方式是为了解决跨域问题,这里不详说了,查一下网上一大堆。

四. 代码实现

        首先,在想要收集数据的页面加入一段js代码,加在<\body>和<\html>之间即可:

        然后,在这里我们请求了一个report.js文件,这个js文件放到网站根目录就行比如WWW/test/report.js,js文件写入代码:

(function () {
    var params = {};
    if(_maq) {
        for(var i in _maq) {
            switch(_maq[i][0]) {
                case 'user_id':
                    params.user_id = _maq[i][1];
                    break;
                default:
                    break;
            }
        }
    }

    var args = '';
    for(var i in params) {
        if(args != '') {
            args += '&';
        }
        args += i + '=' + encodeURIComponent(params[i]);
    }
     
    var img = new Image(1, 1);
    img.src = './report.php?' + args;
})();
        再然后,在这里我们请求了一个php文件,这个php放到刚才report.js的路径下即可,php文件写入如下代码(注释部分为获取浏览器信息等,我只想要自己传的id,所以这里我注释掉了,想要的话就打开注释,这里为了之后log写入mysql数据库方便,所以一切从简了,只留下了必要的字段):
 $value) {
    if($value)
        logger($value.','.time());
}

// foreach ($_SERVER as $key => $value) {
//     logger("_SERVER: Key: $key; Value: $value");
// }

//日志记录
function logger($log_content) {
    $max_size = 10000;
    list($time0, $time1) = explode(' ', microtime());
    $time2 = date('Y-m-d H:i:s', $time1).":".round($time0 * 1000);
    $log_filename = $_SERVER['DOCUMENT_ROOT'].'\\'.date('Ymd', time()).'.log';

    if(!is_file($log_filename)) {
        $fopen = fopen($log_filename, 'w');
        fclose($fopen);
    }

    if(file_exists($log_filename) && (abs(filesize($log_filename)) < $max_size)) {
        // unlink($log_filename);
        // file_put_contents($log_filename, $time2." ".$log_content.PHP_EOL, FILE_APPEND);
        file_put_contents($log_filename, $log_content.PHP_EOL, FILE_APPEND);
    }
}

用户点击页面后,代码执行了这些操作,然后会生成我想要的这种格式的log文件:

正常格式:(简化前的格式)

分析埋点技术并用JS+PHP简单实现(附代码)_第1张图片

简化格式:user_id,时间戳(方便批量存数据库)

分析埋点技术并用JS+PHP简单实现(附代码)_第2张图片

到这里,使用埋点采集网站数据就写好了,有兴趣的试一下,简单。

之后我会再发一文,讲解一下批量存mysql和统计日周月活跃度等。



        


你可能感兴趣的:(数据采集,网站数据采集)