写一个用于统计网站访问信息的功能时,遇到了个问题:
-->我的思路是这样的:当网站有人访问时,判断数据表里是否有记录今天访问的信息,如果没有着新建一条记录,然后就在访问量上+1 ;如果已经有记录了,着直接在访问量上+1 ;代码如下:
//统计访问次数
protected function ttVisit($aid){
if(is_numeric($aid)){
$model = M('monitor');
$row = $model->where(['aid'=>$aid, 'xdate'=>date('Y-m-d')])->field('moid')->find();
if(!$row){
$row['moid'] = $model->data(['xdate'=>date('Y-m-d'), 'aid'=>$aid])->add();
if(!$row['moid']){
return false;
}
}
$model->where(['moid'=>$row['moid']])->setInc('top');
return $row['moid'];
}
return false;
}
其中$aid 是对应某个网站的 ID,top 是数据库字段,表示访问量。xdate 是要统计访问量的日期。
好了,这样的逻辑一点问题都没有,但是真正运行起来,理想状态数据表应该是这样的:
id aid xdate top
1 1 2017-11-01 20
2 2 2017-11-01 100
3 5 2017-11-01 96
然而现实运行起来是这样的
id aid xdate top
1 1 2017-11-01 1
2 1 2017-11-01 19
3 2 2017-11-01 100
4 5 2017-11-01 94
5 5 2017-11-01 1
6 5 2017-11-01 1
为什么理想和现实差距这么大?
是我的逻辑有问题了吗?
-->我的思路是这样的:当网站有人访问时,判断数据表里是否有记录今天访问的信息,如果没有着新建一条记录,然后就在访问量上+1 ;如果已经有记录了,着直接在访问量上+1 ;代码如下:
//统计访问次数
protected function ttVisit($aid){
if(is_numeric($aid)){
$model = M('monitor');
$row = $model->where(['aid'=>$aid, 'xdate'=>date('Y-m-d')])->field('moid')->find();
if(!$row){
$row['moid'] = $model->data(['xdate'=>date('Y-m-d'), 'aid'=>$aid])->add();
if(!$row['moid']){
return false;
}
}
$model->where(['moid'=>$row['moid']])->setInc('top');
return $row['moid'];
}
return false;
}
其中$aid 是对应某个网站的 ID,top 是数据库字段,表示访问量。xdate 是要统计访问量的日期。
好了,这样的逻辑一点问题都没有,但是真正运行起来,理想状态数据表应该是这样的:
id aid xdate top
1 1 2017-11-01 20
2 2 2017-11-01 100
3 5 2017-11-01 96
然而现实运行起来是这样的
id aid xdate top
1 1 2017-11-01 1
2 1 2017-11-01 19
3 2 2017-11-01 100
4 5 2017-11-01 94
5 5 2017-11-01 1
6 5 2017-11-01 1
为什么理想和现实差距这么大?
是我的逻辑有问题了吗?