我在做一个网站。我希望它的一个特点是有一个简单的游戏可以将两个玩家连接在一起。我的问题是我不知道如何制作,所以两个玩家都在同一个“房间”,因为在房间里只有两个玩家。 在我接近的时候,一旦一个玩家加入,他会得到一个“等待下一个玩家”的消息,并等待向数据库发送一个玩家加入的消息。如果下一个玩家加入,我如何让它继续检查下3分钟?PHP如何连接两个玩家
UPDATE
首先这里是迄今为止代码:
<html>
<title>SiteName (test)</title>
<head>
<?php
$servername = "localhost";
$u
sername =
$password =
$dbname =
try
{
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM game');
$stmt->execute(array('gameID' => $gameID));
while($row = $stmt->fetch()) {
print_r($row);
echo "<br />\n";
}
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
?>
<button onclick="myFunction()" id="w">Look for Game</button><br>
<a href="https://www.google.com" id="lbl" class="button"></a>
<script>
function myFunction() {
var elem = document.getElementById("w").innerHTML = "Wait";
var counter = 10;
var label= document.getElementById("lbl");
var counter = 10;
var clabel= document.createElement("p");
clabel.innerHTML = "You can download the file in 10 seconds.";
var id;
label.parentNode.replaceChild(clabel, label);
id = setInterval(function() {
counter--;
if(counter < 0) {
clabel.parentNode.replaceChild(label, clabel);
clearInterval(id);
} else {
clabel.innerHTML = "You can download the file in " + counter.toString() + " seconds.";
}
}, 1000);
}
</script>
<?php
$conn = null;
?>
</body>
</html>
我试图让这个如果第一个球员加盟,他将等待(我有它10秒这里作为测试),直到其他人加入。我试图这样做的方式是让数据库中的一个字段知道玩家是否在该页面并等待下一个玩家。我读了一些关于长轮询的内容,但不知道如何为我的情况实施它。
任何反馈将是有益的,谢谢
您可能正在寻找一个web套接字。 – Mike
如果你坚持让玩家和房间保持在db,并且只用PHP连接玩家(没有IPC或websockets等),那么你需要一个循环,例如(10次){sleep(1秒)。如果(select_players_in_this_room()== 2){print“ok”; return;}}'一个玩家(又名http请求又名PHP进程)等待另一个玩家。 –