我有以下代码来计算我的PHP网站上的访问者。它在使用WampServer的本地开发机器上工作正常,但是当我将文件上传到我的主机帐户进行测试时,我发现它无法正常工作。
我的数字计数非常高,并且还注意到会话永远不会被删除,所以他们只是不断累积。
这是一个简单的会话计数器。有没有更好的方法呢?有人可以给我看一下或者给我一些文章吗? 谢谢!
<?php
//------------------------------------------------------------
// VISITORS ONLINE COUNTER
//------------------------------------------------------------
if (!isset($_SESSION)) {
session_start();
}
function visitorsOnline()
{
$session_path = session_save_path();
$visitors = 0;
$handle = opendir($session_path);
while(( $file = readdir($handle) ) != false)
{
if($file != "." && $file != "..")
{
if(preg_match('/^sess/', $file))
{
$visitors++;
}
}
}
return $visitors;
}
?>
答案 0 :(得分:4)
如果这是共享托管,那么您需要计算每个人的会话文件,而不仅仅是您自己的。这就是为什么这个数字很大,而且与你的网站上有多少人无关。
答案 1 :(得分:2)
计算访问者的最佳(免费)方式是:http://www.google.com/analytics。
如果您想要更多实时数据(例如,当前活跃的用户),请尝试:http://www.woopra.com/
如果您打算使用自己的代码维护站点上的活动用户,我会在用户表的数据库中使用“last action”日期字段。您将能够对SELECT COUNT(id) FROM Users WHERE #{Time.now} > #{15.minutes.ago}
如果您想跟踪匿名用户,而不是使用“用户”表,请创建一个以访问者的IP作为识别字段的表格,并使用上述相同的技术。
答案 2 :(得分:1)
如果生产服务器上的问题是会话永远不会被删除,那么您有两个选择:
答案 3 :(得分:1)
如果你想要自己的内部计数系统,那么我建议,将这些与网站相关的信息存储在数据库中。每次用户浏览网站时都会更新记录。
答案 4 :(得分:0)
嗯,我不确定在会话目录中读取会话文件是最好的方法。
为什么不在每个页面加载的db表上写一次。然后有一个读数,计算最后x分钟内唯一用户的数量?
这听起来像数据库密集,但除非你的网站超忙,否则我看不出问题。