Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理在线状态。客人、用户等_Php_Mysql_Database Design - Fatal编程技术网

Php 如何处理在线状态。客人、用户等

Php 如何处理在线状态。客人、用户等,php,mysql,database-design,Php,Mysql,Database Design,跟踪有多少用户和客人在线的最佳方法是什么?我正在做一个有趣和学习的论坛 现在,我在用户表中有两个字段,分别是is\u online和last\u access\u time 如果当前时间是5分钟或比我设置的上次访问时间多,则将其设置为零。如果登录用户刷新浏览器,我将其设置为1 但是客人呢?我想知道有多少客人也在 另一件非常酷的事情是显示用户正在查看的页面。在页面上,例如论坛线程,5位来宾,荷马和肖默正在查看此页面。但是我应该如何构建这个呢?嗯,也许我应该再问一个问题 我不知道我该怎么办 您有什么

跟踪有多少用户和客人在线的最佳方法是什么?我正在做一个有趣和学习的论坛

现在,我在用户表中有两个字段,分别是
is\u online
last\u access\u time

如果当前时间是5分钟或比我设置的上次访问时间多,则将其设置为零。如果登录用户刷新浏览器,我将其设置为1

但是客人呢?我想知道有多少客人也在

另一件非常酷的事情是显示用户正在查看的页面。在页面上,例如论坛线程,5位来宾,荷马和肖默正在查看此页面。但是我应该如何构建这个呢?嗯,也许我应该再问一个问题

我不知道我该怎么办


您有什么建议?

您无法确定用户正在查看哪个页面,但您可以跟踪他们上次查看的页面。每次将页面交付给用户时,请在与其关联的数据库行中记录该页面的路径。瞧


为了保持来宾的数量,我建议跟踪在过去X分钟内在某个页面上看到的不同的未经验证的IP/HTTP用户代理组合的数量。

我在WebMonkey上找到了这篇文章,这可能会对您有所帮助


我会用cookies来做这个。在用户输入时设置cookie(首先检查以确保cookie不存在)。为该用户生成唯一id的简单方法是将其IP加上当前时间进行散列

$id = md5($_SERVER['REMOTE_ADDR'] . time());
将该id存储在数据库中并用于引用

您可以通过抓取PHP源代码顶部附近的$\u SERVER['PHP\u SELF']或$\u SERVER['REQUEST\u URI']来检查他们正在查看的页面。把它放在桌子上。我将看一看php.net对_serverglobal中存储的内容的解释,因为如果您发现您需要的不仅仅是它们所在的文档(例如index.php),那么它应该会有很大帮助


您可能需要分离用于访问该页面的查询字符串,解析出变量以确定它们请求的页面。无论哪种方式,都可以通过cookies来完成,或者只使用一个cookie来存储唯一的id,并使用您的表来存储其他所有内容。

+1和+fav。好问题,我也会等待回复。您还可以通过执行AJAX请求来跟踪当前正在查看的页面,以便将信息实时发送到要录制的web服务器。