【问题标题】:Calculate average hits with timestamps使用时间戳计算平均点击次数
【发布时间】: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 从技术上讲是的。当用户进入网站时,startend 都通过 PHP 设置为当前时间戳(以防止在用户在我的网站上崩溃时 end 中出现空值)。当窗口退出事件被触发时,我使用 JavaScript 调用 PHP (AJAX) 以使用当前时间戳更新 end 记录,从而提供相对准确的现场时间。

标签: php mysql timestamp


【解决方案1】:

对于每天的平均点击次数,您可以使用开始时间戳。但是,确切的语法取决于您使用的是timestamp 还是unix_timestamp。第一个:

select date(timestamp_start), count(*)
from t
group by date(timestamp_start)

对于unix_timestamp

select date(from_timestamp(timestamp_start)), count(*)
from t
group by date(from_timestamp(timestamp_start))

这会按天进行分组,表示为date。一旦你拥有该格式,其他函数,如year()、month()anddate_format()` 可以用于其他时间段。

【讨论】:

  • 谢谢戈登。我在实现你给我的东西时遇到了麻烦(我对 MySQL 非常陌生)。您是否有机会知道实现此目的的 PHP 方法?我已将所有“开始”行提取到一个数组中,但无法继续。问候,乔治。
  • @GeorgeAnthony。 . .您应该在 SQL 中完成工作,而不是在 PHP 中的数组中。只需运行正确的 SQL 语句并读取结果即可。
猜你喜欢
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多