Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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_Session - Fatal编程技术网

Php 站点上的活动用户数

Php 站点上的活动用户数,php,mysql,session,Php,Mysql,Session,我正在寻找最好的方法来保持对我的网站上的用户数近实时会计。这是在LAMP环境中,我想构建一个前端使用JavaScript,后端使用PHP/MySQL的解决方案。我在这里的最终目标是拥有一个MySQL表,其中每个活动用户都有一条记录 我目前收集这些信息的想法是在每个页面上包含一段javascript,该页面运行AJAX请求,然后为该用户创建记录。为了确保每个用户都有一个唯一的记录,我计划为每个用户创建一个PHP会话 我的问题是:如果我为每个活动用户创建一个php会话,那么如果有1000个连接的用户

我正在寻找最好的方法来保持对我的网站上的用户数近实时会计。这是在LAMP环境中,我想构建一个前端使用JavaScript,后端使用PHP/MySQL的解决方案。我在这里的最终目标是拥有一个MySQL表,其中每个活动用户都有一条记录

我目前收集这些信息的想法是在每个页面上包含一段javascript,该页面运行AJAX请求,然后为该用户创建记录。为了确保每个用户都有一个唯一的记录,我计划为每个用户创建一个PHP会话


我的问题是:如果我为每个活动用户创建一个php会话,那么如果有1000个连接的用户,这是否会导致普通VPS的性能问题?有没有更好的方法可以在不创建PHP会话的情况下为每个用户创建一个唯一的记录(即NAT背后的用户帐户)?

我会在每分钟更新一次的cron上运行它

在用户表中,可以存储在页面加载时更新的最后一个活动字段。如果最后一个活动字段大于5分钟,则认为它们已经消失,而不是在线。

因此,您的cron每分钟统计上次活动时间少于5分钟的用户数,然后将其写入一个简单文件。比如js文件,或者PHP,如果你喜欢的话

这样,您就可以对该文件进行ajax调用,并获得一个简单的输出,而不是对每个请求都运行查询。如果没有实际的开销,那么用户的数量应该是相当不相关的


这也取决于你的需要。我假设您使用的是ajax调用,因为您希望能够在屏幕上实时增加数字,而不仅仅是在每次页面加载时增加数字。

我会在每分钟更新一次的cron上运行它

在用户表中,可以存储在页面加载时更新的最后一个活动字段。如果最后一个活动字段大于5分钟,则认为它们已经消失,而不是在线。

因此,您的cron每分钟统计上次活动时间少于5分钟的用户数,然后将其写入一个简单文件。比如js文件,或者PHP,如果你喜欢的话

这样,您就可以对该文件进行ajax调用,并获得一个简单的输出,而不是对每个请求都运行查询。如果没有实际的开销,那么用户的数量应该是相当不相关的


这也取决于你的需要。我假设您使用的是ajax调用,因为您希望能够在屏幕上实时增加数量,而不仅仅是在每次页面加载时增加数量。

我发现获得打开会话估计数量的最简单方法是计算会话保存路径()返回的目录中的文件数。,这并不是确切的科学,但它很好地指示了有多少打开的会话,而无需将会话保存处理程序更改为数据库或其他机制


这个问题可能会很有用:

我发现获得打开会话估计数的最简单方法是计算会话保存路径()返回的目录中的文件数,这并不是确切的科学,但它很好地指示了有多少打开的会话,而无需将会话保存处理程序更改为数据库或其他机制


这个问题可能很有用:

除非您在会话变量中存储大量数据,否则任何标准VP都应该能够轻松处理1k会话。默认情况下,PHP在磁盘上存储会话——如果您觉得磁盘I/O正在破坏脚本的速度,请考虑编写自定义会话处理程序,以在MySQL等数据库中存储会话,以减少I/O延迟。如果您已经在MySQL中为每个用户存储了一条记录,那么这并不需要太多步骤

除非在会话变量中存储大量数据,否则任何标准VP都应该能够轻松处理1k会话。默认情况下,PHP在磁盘上存储会话——如果您觉得磁盘I/O正在破坏脚本的速度,请考虑编写自定义会话处理程序,以在MySQL等数据库中存储会话,以减少I/O延迟。如果您已经在MySQL中为每个用户存储了一条记录,那么这并不需要太多步骤

这可能是一个很好的问题,因为创建一个会话是相当轻量级的。ajax心跳将是一个更大的问题。这可能值得一读:这可能是一个很好的问题,因为创建一个会话是相当轻量级的。ajax心跳将是一个更大的问题。这可能值得一读: