Count实时登录用户Laravel

时间:2015-08-03 06:19:58

标签: php mysql laravel laravel-4

我认为Laravel也解决了这个问题,但我想稍微提一下我的问题。

Laravel是否可以实时显示当前登录的用户数量?

如果记录了10个用户,那么计数器应显示10个用户已登录。这将显示给所有10个用户,但实时显示。

因此,如果某些用户退出,则计数器应该减少。

我使用的方法就像尝试登录后一样,我们可以增加DB中其中一列的计数器。我们可以使用另一个表,比如登录表。

当用户注销时,我们会通过删除用户的Auth :: id来减少计数器,并且计数会减少。

但后来我想实时尝试一下,laravel本身怎么可能呢?

3 个答案:

答案 0 :(得分:0)

您可以使用Laravel 5的事件广播功能实时完成。

每次用户登录时,您都需要广播一个事件。您可以按照本教程:ROUND

然后在客户端,您将需要使用JavaScript来监听该事件。

答案 1 :(得分:0)

你想的并不是那么简单。您可以在每次用户登录时增加存储在数据库中的某种数字,并在每次用户点击注销网址时减少数量,但对于那些不使用注销网址并且刚刚关闭的用户会怎样窗户?它会在短时间内生成错误数据。 Laravel默认将会话保存在文件中,即使用户不活动,他们也可以在服务器硬盘上停留数周/数月/年。

<强> BUT

可以在数据库[http://laravel.com/docs/4.2/session#database-sessions]

中存储会话

正如您在Laravel文档中所看到的,Laravel使用last_activity字段来存储用户活动数据,通过访问此字段,您只需检查在选定时间段内有多少用户处于活动状态。

了解您可以在视图中轻松显示此内容。 我不打算为你编写代码,我认为准备查询来获取数据并不是那么难。我希望我能帮助你。

答案 2 :(得分:0)

我通过在每次加载页面时使用user_id写入DB表来解决此问题。

然后,我创建了一个视图,该视图显示了过去8分钟内一直处于活动状态的每个人的列表。我的逻辑是,在8分钟内没有更新活动表就意味着他们已经离开了网站。

效果很好。我不知道在一个拥有大量流量的巨大网站上会有多高的效率。我正在从事的项目每天只有数百人登录。