javascript - 递增一个 int,但同时有多个用户
问题描述
我正在设置一个小网站,应该计算有多少人进入一个房间。如果有人进入房间,经理点击“+”按钮,值加 1。“-”按钮也可用。我已经使用 JQuery 完成了它,但它仅适用于网站上的 1 个活跃用户。我想知道如何同时适应多个用户,如果至少有可能的话......所有用户都应该可以实时访问该号码,也许PHP可以解决这个问题?
$(document).ready(function(){
var compteur = 0;
const min = 0;
const max = 1200;
$("#resultat").attr('value', compteur);
$('#increase').click(function(){
if(compteur < max){
++compteur;
$("#resultat").attr('value', compteur);
}
if(compteur > max){
alert("Nombre maximum de personnes atteint !");
}
});
$('#decrease').click(function(){
if(compteur > 0){
--compteur;
$("#resultat").attr('value', compteur);
}
if(compteur < min){
alert('Impossible de descendre en dessous de 0 personne');
}
});
});
解决方案
您是对的,您确实需要一种服务器端语言(PHP 或您喜欢的任何语言)以及您的 javascript 代码段。为此,您需要将活动用户的数量存储在服务器上的某个位置。也许是一个数据库,或者如果它只是要计算用户,您可以将它存储在一个文件中(这将需要您实现锁定文件,以便没有两个用户读取相同的值并更改它)。
在 PHP 中,你会做这样的事情:
更新了代码,以防止数据竞争。
创建文件counter.php;将它放在您的 html 文件旁边。代码会有点像这样:
<?php
// counter.php
// Increment
if (isset($_POST['increment']))
{
// Increment in your database
// UPDATE online_users SET users = users + 1
}
// Decrement
else if (isset($_POST['decrement']))
{
// Decrement in your database
// UPDATE online_users SET users = users - 1
}
else if (isset($_GET['onlineusers']))
{
// Read from your database and output
// SELECT users FROM online_users
}
?>
然后在您的 jQuery 代码中,您可以简单地向该文件发出 POST 请求,以增加或减少文件中的用户数。
增量:
jQuery.post("counter.php?increment");
减量:
jQuery.post("counter.php?decrement");
获取当前活跃用户:
jQuery.get("counter.php?onlineusers", function(numusers) {
compteur = numusers;
$("#resultat").attr('value', compteur);
});
注意:确保在增加或减少之前检查 counter.php 文件中的 MAX 和 MIN 用户条件!我没有这样做:P
推荐阅读
- apache-kafka - kafka connect S3连接器内存分配
- symfony - 找出/自定义 Symfony Forms Twig 块名称
- c++ - Clang 总是打破多重继承的继承列表
- ios - 如何在 Swift 中使用 Objective-C 中的 Dispatch_after 函数?
- typescript - TinyMCE Yeoman 无法构建
- php - Yii2回调后如何获取用户身份
- python - ValueError(“找到数量不一致的输入变量” ValueError:找到样本数量不一致的输入变量:[10725, 3575]
- c# - 如何将清单从 sha1 更新到 sha256?
- javascript - 如何从 MVC 控制器显示 Chart.js 折线图
- excel - 如何绕过此 Powershell 警告消息?