最近在做公司的BI系统,由于很多东西都是探索阶段,做起来遇到很多的问题,下面这个是其中一个计算一次访问会话的实现,还待优化和改进
/** * @param $data array(key=>array((int)view_time,url,referer)) order by value asc * @param $threshold * @param $delta * @return boolean */ function uvAlgorithm($data, $threshold, $delta) { $stack = array(); $rangeDown = $data[0]['view_time']; $vid = md5($rangeDown); $rangeUp = $data[0]['view_time'] + $threshold; // echo $rangeDown . '~' . $rangeUp . "\n"; // print_r($data); foreach ($data as $k=>$v) { if ($k == 0) { updateVisitId($v['id'], $vid); $stack[] = $v['url']; continue; } if ($v['view_time'] >= $rangeDown && $v['view_time'] < $rangeUp) { if (in_array($v['referer'], $stack) || ($data[$k]['view_time'] - $data[$k - 1]['view_time'] < $delta)) { $stack[] = $v['url']; updateVisitId($v['id'], $vid); } else { updateVisitId($v['id'], md5($v['view_time'])); } } else { $temp = array_splice($data, $k); // print_r($temp); // print_r($data); // print_r($stack); $stack = array(); if (empty($temp)) { return false; } else { uvAlgorithm($temp, $threshold, $delta); } } } }
你好,我是猎头Cathy,有银豆网的PHP方面的职位想向您推荐,不知道你是否有兴趣了解一下,加我的Q497872631
Cathy
Consultant
天领企业管理咨询有限公司
Web : http://www.tianlinghr.com
Tel : +86 21 6051-3184
Mob : +86 1800 164 8020
mail : cathy@tianlinghr.com
QQ : 497872631