挿入するのは、アクセス日時、ip、新規・2回目以降のユーザー、cookieのユニークID、リファラー、前ページの平均滞在時間、閲覧ページ
datasetは以下のような連想配列
[“date”]=> string(19) “2018-04-15 23:12:01” [“ip”]=> string(12) “192.168.33.1” [“visit”]=> string(13) “Returned User” [“cookie”]=> string(10) “a167mn677r” [“referrer”]=> string(9) “/view.php” [“avgtime”]=> string(2) “25” [“page”]=> string(9) “/view.php”
na.js
配列のkeyの名称は、google analyticsの言語をEnglish USにして参考にネーミング
var unix = Math.floor((new Date).getTime()/1E3); var visit = "New User"; if(navigator.cookieEnabled){ var all=document.cookie + ";"; var cStart = all.indexOf("_na=",0); if(cStart == -1){ var char = "abcdefghijklmnopqrstuvwxyz123456789"; var id = ""; for(var i=0; i<10; i++){ id += char[Math.floor(Math.random()*35)]; } var expire = new Date(); expire.setTime(expire.getTime() + 1000*3600*24*365*2); document.cookie="_na=NA1."+id+"."+unix+";expires=" + expire.toUTCString(); a.push(['cookie',id]); a.push(['vist',visit]); a.push(['referrer',document.referrer]); } else { visit = "Returned User"; a.push(['visit',visit]); var cEnd = all.indexOf(";",cStart); var cID = all.substring(cStart+8,cEnd - 11); //_na=NA1.0000000000. a.push(['cookie',cID]); var c = window.sessionStorage.getItem(['ScribeTransport']); if(c){ d = JSON.parse(c); a.push(['referrer',d.path]); a.push(['avgtime',(unix - d.time)]); } } } var data = '{"path":"'+location.pathname+'", "time":"'+unix+'"}'; window.sessionStorage.setItem(['ScribeTransport'],[data]); a.push(['page',location.pathname]); $(function(){ $(document).ready(function(){ var postData = {"userdata": a}; $.post( "doubleclick.php", postData, function(data){ $(".box").html(data); } ); }); });
doubleclick.php
1.アカウントIDをmongoのcollection名にしたいので、postされたデータから、アカウントIDのみ切り抜いて、array_spliceでそれ以降をdata setにする。
2.連想配列をmongodbにinsert
$data = array("date"=>date("Y-m-d H:i:s")); $audience = $_POST['userdata']; $mongo = "app.na".$audience[0][1]; $audience = array_splice($audience, 1); foreach($audience as $value){ $data += array($value[0]=>$value[1]); } var_dump($data); $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $bulk = new MongoDB\Driver\BulkWrite; $bulk->insert($data); $mng->executeBulkWrite($mongo, $bulk); echo "finished!!!";
うおお、上手く入っている。嬉し~
同じcookie、異なるセッションでアクセスします。
あれ、待てよ、なんか違う気がしてきた。
セッションにもユニークなID発行するべきなんじゃないか...?
ちょっと混乱してきたが、queryのviewを作りながら修正していきましょう。