我不确定这样做的最佳方法是什么,但我需要能够显示正在查看访问者正在查看的当前页面的访客的数量。没有谁,但有多少。
做这样的事情最简单的方法是什么?是没有数据库可以做到这一点,但可能使用javascript或PHP吗?
输出将是“有XX人查看此页面”。
修改 这可以通过显示过去15分钟的唯一身份访问者数量来完成吗?我不会100%准确,但会为我的目的而工作
答案 0 :(得分:1)
HTTP是无状态协议,没有办法确定多少 访客目前“在线”,因为根本没有办法 识别除显式登录之外的唯一用户。这都是基于 估计(例如,来自不同IP的请求数量) 最后10分钟)并且对于访客而言并没有那么无用。该 当前浏览用户或页面点击的数量绝对没有说明 关于网站的质量。
最简单的方法是编写一个插入(或更新)IP的脚本 和DB表中的时间/日期。然后计算唯一IP和puge的数量 旧的。大多数网站看10分钟。为此目的的间隔; 鉴于HTTP的本质。
调用[文件]“userCount.php”或somthing并将其包含在顶部 你的标题,所以每次点击都会调用它。
// ** Begin userCount.php **//
$timestamp=time();
// 10 minutes of timeout
$timeout=$timestamp-6000;
// REPLACE instead of INSERT
mysql_query("REPLACE INTO online (time,ip) VALUES
('$timestamp','$REMOTE_ADDR')
WHERE ip = '$REMOTE_ADDR')";
// purge all old users
mysql_query("DELETE FROM online WHERE time < $timeout");
// delete my own ip adress from statistic
mysql_query("DELETE FROM online WHERE ip = 'xxx.xxx.xxxx.xxxx'");
$result=mysql_query("SELECT ip FROM online");
$user=mysql_num_rows($result);
echo $user;
// ** End userCount.php **//
这应该有用。
取自Here
答案 1 :(得分:0)
我认为对访问者进行实时跟踪的最简单方法是让每个访问者的客户端每隔x秒向您的脚本发送ajax请求,并继续跟踪表或文本文件中的所有会话ID /页面。如果会话ID未在特定页面上发布一段时间,请将其删除。
如果您使用数据库执行此操作。使用像
这样的表格tracking
--------
sessionid (PK)
pageID (or pageURI)
last_seen (timestamp)
然后,您可以在该表上查询以获取访问该页面的(或多或少)当前用户的数量。
SELECT COUNT(*) visitors FROM tracking WHERE last_seen < DATE_SUB(NOW(), INTERVAL 30 SECONDS) GROUP BY pageID
但如果用户禁用了javascript,那么这不起作用,因此它不是100%精确的解决方案。