显示每位访客的唯一号码?

时间:2013-10-22 08:32:57

标签: php web numbers visitor

我想在我的网站上创建一个页面,其中每个访问者都会显示一个唯一的编号(1,2,3等等)。

例如,如果访客A连接firt,则会显示数字“1”。然后,如果访客B同时连接,则会显示数字“2”。

但这是困难的部分:如果访客A断开网站,下一位访客(C)会在页面上看到数字“1”(如果没有其他访客同时连接)。

一些“程序之神”可以帮助我这样做吗?

非常感谢! 克里斯。

3 个答案:

答案 0 :(得分:0)

您没有与网站“连接”和“断开连接”。您进行HTTP调用以获取页面,然后没有进一步的通信。每个HTTP呼叫都是单独的连接和断开连接。

但是:您可以使用AJAX每秒检查一次,以告诉服务器您“仍在那里”。 (就像心跳信号一样)

有可能做到,但不是很优雅。

问题(1):如果:A得1,B得2,A“断开”,C得1还是3?,......

尝试:

用户拨打电话,在数据库中保存他的号码和“超时”时间(现在为+ 3秒),打开一个会话,在该会话中存储属于该用户的行的“id”。

编写一个Javascript脚本,每秒执行一次AJAX调用,以便为用户更新数据库中的“timeout”时间。

如何获取数字:

使用查询检查数字是否未超时(计算“用户”数量并检查您保存的“数字”的最大值是否等于,或者等等......) 如果是这样,你可以给新用户一个更大的数字,否则你必须找到不采用的数字或者再次以1开始(取决于你对问题1的回答)

问题2:你为什么要编程?

答案 1 :(得分:0)

不确定用什么来跟踪用户,mysql,redis或者svr可以在请求之间保存数据,比如nodejs。

无论如何,我认为你需要保留两件事,

  1. 按顺序返回的号码列表,如[1,5,19 ...]
  2. 现在的游客总数,如20
  3. 因此,当一些访问者来到时,请在一个帖子中完成这些事情:

    1. 首先检查返回的号码列表,如果不为空,则弹出第一个并返回;
    2. 或者,只需增加总数并返回新号码。
    3. 当访客离开时,将其号码插入返回列表的右侧位置,并减少访问者数量。

答案 2 :(得分:0)

因为HTTP协议是stateless,所以没有可靠的方法来实现这一点。

就服务器而言,我只是在下载页面及其内容时实际连接。这可能涉及10个,如果不是数百个实际连接。一旦完成,我就断开了。

我可能会盯着这个页面10个小时,但我没有联系。

使用PHP,您可以考虑使用会话,将其存储在数据库中将允许您计算sesion行以获取下一个“连接号”,但是在这方面这也是不可靠的。会话在我第一次与创建会话的php脚本的对话中创建。会话将存在并随后与您的脚本进行对话刷新,但它将一直存在,直到它的超时期限到期。

在超时发生之前我可能已经去了其他地方。所以这对你的要求也是不可靠的。

@SpazzMarticus提到的javascript'heartbeat'想法有可能但是因为我可以禁用javascript它也是不可靠的。它还会使您的服务器负载增加一个休息量,但收效甚微。图片中有1000个用户在您的网站上查看页面,即每秒1000次心跳检查,效果非常小。由于您的服务器正在忙于计算连接,因此由于页面加载缓慢,您将丢失多少其他用户。

总之,除非你准备进行大量的开发和大量的反复试验,否则我会忘记这个想法。