我正在寻找一种好的方式,以显示有多少人正在访问我的网站目前(生活)。
我想,当我将访问我的服务器/站点的人的ip地址保存在mysql表中时,这可能是最简单的方法。
所以我可能要做的是:
创建配置良好的mysql表
添加保存ip地址的功能(我猜是在php中
增加删除不再需要的ip地址的功能
使流程实时或接近实时
有人能帮帮我吗?
发布于 2012-09-07 00:03:55
首先,我可以建议这个问题的标题不是很好吗?这是一个典型的错误,人们在寻求帮助时会猜测问题的解决方案是什么--我在目前/以前工作过的公司中,当员工提交bug报告时,我总是会看到这种情况。
你想要实现的是实现某种形式的分析,这样你就可以确定有多少人正在访问你的网站,其中有多少人是独立访问者,并能够看到当前谁正在使用该网站的实时数据。因此,一个更好的标题应该是“我如何才能获得关于谁正在访问我的网站的信息?”
将ip地址存储在表中是实现此目标的一种有效方法,但并不理想。我强烈建议使用Google Analytics (或类似的东西),因为这将使您能够查看所有这些信息以及更多信息,而且您不需要花费太多精力。你甚至不需要成为一名程序员-你只需将他们提供的代码片段复制并粘贴到你的HEAD标签中即可。有很多关于如何做到这一点的信息,所以我不会详细说明,但请不要犹豫地询问您是否有任何问题。
发布于 2012-09-06 23:56:29
下面是一个快速示例,说明如何获取客户端的真实IP地址,然后从mysql DB中存储和检索其值
//Test if it is a shared client
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
//The value of $ip at this point would look something like: "192.0.34.166"
$ip = ip2long($ip);
//The $ip would now look something like: 1073732954现在您已经将客户端的真实IP地址转换为INT格式,您可以像往常一样将其写入DB
$sql = "INSERT INTO user(ip) VALUES('$ip')";
$dbQuery = mysql_query($sql,$dbLink);有关此链接的更多信息:
附加信息:使您的代码不受的影响。使用或
使用PDO扩展的示例:
<?php
$stmt = $dbh->prepare("INSERT INTO user(ip) VALUES(?)");
$stmt->bindParam(1, $ip);
$stmt->execute();
?>发布于 2012-09-07 00:06:26
将访问者存储到数据库中(就像其他答案一样)。使用保存访问者最后一次请求的日期的datetime字段(您必须在每个页面视图中更新行)。
现在,您可以使用MySQL interval来计算“当前在线访客”。
例如:
SELECT
COUNT(1) AS `online_visitors`
FROM `visitors`
WHERE `datetime` > NOW() - INTERVAL 30 SECONDShttps://stackoverflow.com/questions/12303854
复制相似问题