登录用户计数Laravel 3

时间:2016-02-02 09:37:32

标签: laravel laravel-3

我正在使用Laravel 3。如何通知可以告诉我当前登录了多少用户。

我希望我能更好地解释这一点,但我是Laravel的新手,我应该升级到5.1但是目前这不是一个选项。

感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

第1步:升级到Laravel 5.x
第2步:添加迁移,将列active_at添加为users表的日期 第3步:添加一个名为ActiveUser的新HTTP中间件 第4步:在中间件句柄方法中:

if ($user = $request->user()) {
    $user->active_at = new \DateTime();
    $user->save();
}

第五步:喂宝宝龙 第6步:您现在可以使用active_at

按活动获取用户

答案 1 :(得分:1)

我认为这不是Laravel的内置功能。您可以在用户表中添加一列,如果用户已登录,则可以添加标记。

在对用户进行身份验证后,只需将该列设置为true,并在用户再次注销时将其设置为false。

如果您需要登录用户的数量,只需计算用户表中该标志设置为true的行。

答案 2 :(得分:1)

据我所知,没有简单的方法可以实现这一目标。您可以做的是显示使用users列中最后一个登录列在过去X分钟内登录的用户数。我承认,这不是你想要的,但它可能是下一个最好的东西。

答案 3 :(得分:-2)

如果不使用第三方工具(如html5 websockets(ratchet,socket.io等)或javascript with ajax),就无法用laravel或php完成此操作。

  • 使用websockets非常简单,更可靠。您可以创建服务器来处理连接/断开连接并保持连接的套接字记录,并向所有连接的套接字发送消息,以确定主动连接的套接字的数量。这将是实时和更少的事务,因为websockets只会在有活动(某人登录/注销)时触发,但需要更高的服务器/机器控制访问级别才能安装node.js,socket.io并打开tcp通讯口岸。
  • 第二个选项是带有ajax的javascript。将用户数据表中的列保留为last_online,并在每次用户浏览站点中的任何页面时更新此数据。就像在每个页面的顶部/底部放置代码并使用当前时间更新此列值。其次,确定访问者在每个页面上大致花费的平均时间。然后创建一个ajax脚本,您可以在其中显示您的onlines计数并在您确定的每隔x个时间内触发它(即每隔30秒),检查自上次检查后有多少人在线(当前时间 - x时间 ) 例如 $query = "select count(id) total_online_last30 from users where last_check>='" . date( "Y-m-d H:i:s" , strtotime( date() . " +30 seconds") ) . "'" 然后打印出来。