我想通过Laravel概述我的独特访客(有点像cloudflare).
我已经拥有的东西:
我有一个数据库sheme,但我不认为这是好的:
我想尽可能多地将数据存储到我的数据库中,但不是存储地点,哪个浏览器等…
我希望能够每天查看所有访问者(唯一的,因此一天内不是同一个IP的两倍),因此请计算IP地址,以及整个月.
例如:
4月份需要在我的视图中显示如下:
['1/04',5],['2/04',58],['3/04',496],['4/04',654],['5/04',854],['6/04',756],['7/04',254],['8/04',887],['9/04',452],['10/04',985],['11/04',745],['12/04',120],['13/04',['14/04',['15/04',321],['16/04',852],['17/04',753],['18/04',951],['19/04',791],['20/04',167],['21/04',761],['22/04',349],['23/04',741],['24/04',258],['25/04',963],['26/04',317],['27/04',482],['28/04',341],['29/04',['30/04',751]
因此,每天必须计算IP的数量,并且持续一个月,取决于当前月份.
输出看起来与此类似:
如果可能的话,我想收到一个控制器,视图和数据库sheme.
我已经搜索了整个互联网,但没有找到任何东西……
如果有人能帮助我,我会非常高兴!
最亲切的问候,
知更鸟
解决方法
如果我正确理解你的目标,这就是我解决问题的方法.
对数据库进行以下更改:
1) Remove the hits field. 2) Store dates in a YYYY-MM-DD format.
然后检查数据库中的现有记录,或者在新用户登录或请求页面时创建一个新记录(您应该在数据库上缓存此减少命中):
$visitor = Visit::firstOrCreate(['date'=>$current_date,'ip'=>$ip_address);
然后,当需要检索视图的数据时,您可以调用:
$visits = Visit::selectRaw('date count(date) as hits'))->groupBy('date')->whereRaw("`date` between $begin and $end")->get();
这应该让你前进,但你必须自己解决这些问题.