首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL + PHP -每次用户登录时存储时间戳的最佳方式

MySQL + PHP -每次用户登录时存储时间戳的最佳方式
EN

Stack Overflow用户
提问于 2012-03-07 19:38:26
回答 3查看 2K关注 0票数 3

我需要跟踪用户的所有登录,以便他们每次登录时我都有他们登录的时间戳。最有效和最好的方法是什么?

我总是通过在users表中设置一个文本字段来实现这一点,该字段存储由字符分隔的unix时间戳。每次登录时,都会在末尾添加另一个时间戳。

代码语言:javascript
复制
1243453458|1255476933|1263453743|1318495068|

这是一种糟糕的做法吗?我认为一个单独的登录表,每次任何用户登录时都有一行,这是完全夸张的,并且在检索此信息时会对数据库造成更大的压力。

请记住,我在PHP中处理这些时间戳,并使用jQuery从数据中创建图形。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-07 19:49:36

是的,这是一种可怕的存储任何东西的方法,包括时间戳,而且还有更好的方法来做到这一点。即使是最简单的表也能为您提供更好的性能:

代码语言:javascript
复制
user_id (int) | last_login (timestamp)

  • ,你将时间戳存储为字符串。这对于存储、检索和更新是完全低效的;此外,您还会遇到列限制eventually.
  • there是针对这种目的而高度优化的数据类型- MySQL服务器开发人员倾向于对存储数据有所了解,而对于这样一个具有固定大小的行的小表,数据库命中可以忽略不计-与包含可变大小字符串的表相反,该表需要在应用程序中进行进一步处理。

换句话说,通过试图优化应用程序(基于错误的假设-“另一个表太紧张了”),你已经悲观了它,提出了一个全面的低效解决方案。不要把事情搞得过于复杂;当你有疑问的时候,描述两种选择,自己去看看。

票数 5
EN

Stack Overflow用户

发布于 2012-03-07 19:43:47

您可能更好地将其放入数据库中的一个单独的表中,如下所示:

代码语言:javascript
复制
members_logins
member_id (int) | timestamp (timestamp)

这意味着它将更容易地进行操作。

票数 4
EN

Stack Overflow用户

发布于 2012-03-07 19:40:56

在mysql中,您可以使用时间戳

看看here如何配置它

编辑:您的竖线分隔方法不好。您可以有一个transactions表来存储各种用户事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9600790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档