【发布时间】:2013-06-25 10:26:07
【问题描述】:
在我的网站上,我使用时间戳来跟踪我的用户在我的网站上的平均时间长度。每个唯一 IP 都记录有“输入时间”和“退出时间”记录(使用 AJAX 更新)。有了这个,我就能够计算出我的用户在我的网站上花费的平均时间。
但是,我还希望能够计算每天、每周和每月的平均点击次数。我确定可以使用时间戳来实现这一点,但我不知道如何解决 PHP 和 MySQL 中的问题。我在其他网站上读到 MySQL 有一些可以计算平均值的函数,但我不知道如何提取每天/每周/每月的时间戳,因此甚至无法将任何数据传递给所述函数(s)。
我可以为每一天/周/月制作一个带有“开始”和“结束”时间戳的表格,并使用循环/关联数组提取其间的值,但该方法似乎过于繁琐且需要很长一段时间。有没有更简单的方法来实现这一点?
我目前的表结构是:
+----------------+----------------+----------------+----------------+
| start | end | unique_id | id |
+----------------+----------------+----------------+----------------+
| 1358789867 | 1358789872 | (hash here) | 65 |
+----------------+----------------+----------------+----------------+
| 1358789966 | 1358789972 | (hash here) | 66 |
+----------------+----------------+----------------+----------------+
| 1358789998 | 1358790003 | (hash here) | 67 |
+----------------+----------------+----------------+----------------+
【问题讨论】:
-
你能告诉我们表格的列和一些行吗?
-
如何格式化时间戳? php 有
strtotime()和date_parse()可以用几乎任何时间戳为您提供所需的内容,尤其是在MySQL 表中时。至于在数据库中建立表之间的关系,您只需要开始摆弄直到正确为止,并注意具有大量查询的基于性能的选择器。 -
会话持续时间超过一天。例如。开始和结束总是在同一天还是可以是不同的日子?会话可以超过一天(超过 24 小时)吗?
-
@hakre 从技术上讲是的。当用户进入网站时,
start和end都通过 PHP 设置为当前时间戳(以防止在用户在我的网站上崩溃时end中出现空值)。当窗口退出事件被触发时,我使用 JavaScript 调用 PHP (AJAX) 以使用当前时间戳更新end记录,从而提供相对准确的现场时间。