【问题标题】:Show Number of Live Page Viewers [duplicate]显示实时页面查看者的数量 [重复]
【发布时间】:2012-04-11 20:37:23
【问题描述】:

可能重复:
how to count the site current visitors using java script or php

我的网站上有一个嵌入式流,但我想提取页面上的实时观众数量。有没有办法使用 PHP / AJAX 来做到这一点,显示当前查看我的网页的人数?

【问题讨论】:

  • 是的,有办法(几乎)做任何事情
  • 小想法:假设你使用的是PHP,创建一个文本文件。让脚本读取内容,然后添加字符或数字。观众总数可以是数字的值或字符串的长度。您可以每隔一小时左右更新一次,以更新真实的观众人数。
  • 是的,我想过,但是我在 JS 中找不到一个好的分析方法来拉动当前观众的数量。理想情况下,我希望它每秒通过 ajax 更新到网站,以便它真正实时。

标签: php javascript jquery ajax server-side


【解决方案1】:

免责声明:很久以前我做过这样的事情,所以这里是丑陋的旧代码(我不会努力使看起来更好/不是当我第一次开始编程时,因为这只是为了给你关于如何完成的想法,而不是勺子喂任何特定的代码)。

$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);
?>

<font size='1'>Currently Online: <br>
                        <?=$num_guests;?> Guests<br>
                        <?=$num_reg;?> Registered users

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

【讨论】:

  • 所以当用户进入页面时,你只需交给他们一个会话并跟踪它直到它消失?
  • 基本上,是的。只要浏览器打开/会话没有超时,会话就应该对访问者保持唯一性。更新各种活动并查询最近的会话活动。
  • 这让我大致了解了我想做什么以及可以玩的东西。对我来说听起来很合法!谢谢!
【解决方案2】:

Clicky 之类的东西应该适合你。

【讨论】:

  • 好吧,我想在我的网站上实时展示它,而不仅仅是为了让我能看到它。这看起来像是后台分析。
【解决方案3】:

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

执行此操作的常用方法是从$_SERVER['REMOTE_ADDR'] 获取已连接访问者的 IP,然后将其写入文件,然后将所有唯一 IP 相加以确定有多少人已连接。 这将需要某种清理功能来删除任何不再连接的 IP。

脚本在页面加载时运行,并对文件中的访问者进行计数,因此,如果使用 ajax,您会运行一个 PHP 脚本,每隔一段时间轮询该文件以动态更新计数,或者您可以在页面加载时执行此操作,但 ajax 是不需要,因为您可以使用 PHP 来完成。

如果你还不知道怎么做,首先要弄清楚如何在$.ajax 中运行 PHP 脚本,然后编写一个统计访问者的函数可能是下一个。

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

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2021-11-04
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多