显示实时页面查看器的数量

可能重复:
如何使用java脚本或php计算网站当前访问者

我的网站上有一个嵌入式流,但我想在页面上提取实时查看器的数量。 有没有办法用PHP / AJAX执行此操作,显示当前查看我的一个网页的人数?

免责声明:我在很久以前做了类似的事情,所以这里是丑陋的旧代码(当我第一次开始编程时,我不会努力使它看起来更好/不是因为这只是为了让你了解一下如何做到这一点,而不是勺子喂任何特定的代码)。

$timeout = time() - (20); $sessid_exist = mysql_query("SELECT sessid FROM bw_sessions WHERE sessid='" . session_id() . "'") or die (mysql_error()); $sessid_check = mysql_num_rows($sessid_exist); if ($_SESSION['bw_username']) { $sql = mysql_query("UPDATE bw_sessions SET timestamp='" . time() . "', username='" . $_SESSION['bw_username'] . "' WHERE sessid='" . session_id() . "'"); } else { if($sessid_check > 0){ $sql = mysql_query("UPDATE bw_sessions SET timestamp='" . time() . "' WHERE sessid='" . session_id() . "'"); } else { $sql = mysql_query("INSERT INTO bw_sessions (id, username, sessid, timestamp, ip) VALUES(null, '', '" . session_id() . "', '" . time() . "', '" . $_SERVER['REMOTE_ADDR'] . "')") or die (mysql_error()); } } $sql = mysql_query("SELECT distinct sessid FROM bw_sessions WHERE username='' AND timestamp >= '$timeout' ORDER BY timestamp DESC") or die (mysql_error()); $sql2 = mysql_query("SELECT distinct sessid,username FROM bw_sessions WHERE username!='' AND timestamp >= '$timeout' ORDER BY username DESC") or die (mysql_error()); $num_guests = mysql_num_rows($sql); $num_reg = mysql_num_rows($sql2); ?> Currently Online: 
Guests
Registered users

您只需要创建一个表并保存session_id的..然后查询该表以查找任何“最近”活动。 如果你想要实时更新,请将上面的代码(修改为你的表设计)放在“online.php”中,并每隔x秒通过jquery调用它,否则你决定这样做。

像Clicky这样的东西应该适合你。

如果你已经在某个地方看到它,它可能是可能的,这种东西内置于大多数论坛软件中,并且它被用在很多网站上,所以它可能并不那么难。

通常的方法是从$ _SERVER [‘REMOTE_ADDR’]获取连接访问者的IP,然后将其写入文件,并将所有唯一的IP加起来以找出有多少人连接。 这将需要某种清洁function来删除任何不再连接的IP。

该脚本在pageload上运行,并在一个文件中对访问者进行计数,因此如果使用ajax,您运行一个PHP脚本,每隔一段时间轮询该文件以动态更新计数,或者您可以在pageload上执行此操作,但是ajax不是必需的你可以用PHP做到这一点。

如果您还不知道如何,首先要弄清楚如何在$ .ajax中运行PHP脚本,那么编写一个可以计算访问者数量的函数可能就是下一个。

我在搜索这样一个脚本时获得了2.44亿次点击, 这里和这里有一个。