【发布时间】:2010-10-12 23:33:25
【问题描述】:
是否可以从类似的表格中计算在线时间
logtype time
----------------
login 2:30
logout 2:45
login 3:20
logout 4:50
login 5:00
login 5:10
logout 6:00
它会有额外的登录,因为有时服务器会崩溃并且不会添加注销。 您可以仅在 MySQL 中执行此类操作,还是必须使用 ColdFusion? 如果是这样,你会如何在 MySQL/ColdFusion 中做到这一点?
我想要的只是特定用户的(粗略)总在线时间、小时、天、分钟等。
【问题讨论】:
-
是否还有需要分组的用户 ID 字段?登录/注销是否仅包括日期或时间?
-
是的,只是时间,还有一个用户字段,叫做用户。
-
除了“服务器崩溃”之外,您还需要考虑一些事项。首先,我会假设您依赖用户从应用程序中物理注销,这在很多情况下可能不会发生。您可以在 application.cfc 中将注销作为 onSessionEnd() 方法的一部分处理,但唯一的处理方式是在会话到期时,根据应用程序的会话超时。
-
假设所有这些,那么,您现在要处理实际数据...在这种情况下,假设服务器问题、基于会话的注销等 - 数据永远不会是完全准确的,在这种情况下,你试图用它来完成的事情是非常不可靠的。
-
显然它只能精确到一个点。未注销的崩溃/用户是您始终必须考虑的问题。一个相关的问题是结果的用途是什么,您如何定义“在线时间”?聊天应用程序可能只需要知道自上次登录以来的在线时间。在这种情况下,在相对短暂的范围内跟踪数据,如“应用程序”可能是合适的。而工作应用程序可能需要跟踪“今天”在线时间。在这种情况下,数据库跟踪可能会更好。虽然有两列可能会使事情变得更容易,即 LoginTime、LogoutTime。
标签: mysql coldfusion time