PHP如何连接两个玩家

PHP如何连接两个玩家,php,html,mysql,pdo,Php,Html,Mysql,Pdo,我正在制作一个网站。我希望它的一个特点是有一个简单的游戏,将两个玩家连接在一起。我的问题是我不知道如何做到这一点,所以两名球员都在同一个“房间”,因为房间里只有两名球员。 在我处理这个问题的过程中,一旦有一个玩家加入,他会收到一条“等待下一个玩家”的消息,并在发送到一个玩家已经加入的数据库时等待。如果下一个玩家加入,我如何让它在接下来的3分钟内不断检查 更新 首先,这里是到目前为止的代码: <html> <title>SiteName (test)</title&g

我正在制作一个网站。我希望它的一个特点是有一个简单的游戏,将两个玩家连接在一起。我的问题是我不知道如何做到这一点,所以两名球员都在同一个“房间”,因为房间里只有两名球员。 在我处理这个问题的过程中,一旦有一个玩家加入,他会收到一条“等待下一个玩家”的消息,并在发送到一个玩家已经加入的数据库时等待。如果下一个玩家加入,我如何让它在接下来的3分钟内不断检查

更新

首先,这里是到目前为止的代码:

<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>

站点名称(测试)
寻找游戏
函数myFunction(){ var elem=document.getElementById(“w”).innerHTML=“Wait”; var计数器=10; var标签=document.getElementById(“lbl”); var计数器=10; var clabel=document.createElement(“p”); clabel.innerHTML=“您可以在10秒内下载该文件。”; 变量id; label.parentNode.replaceChild(clabel,label); id=setInterval(函数(){ 计数器--; 如果(计数器<0){ clabel.parentNode.replaceChild(标签,clabel); 清除间隔(id); }否则{ clabel.innerHTML=“您可以在“+counter.toString()+”秒内下载该文件。”; } }, 1000); }
我试图让它,如果第一个球员加入,他将等待(我这里有10秒作为测试),直到其他人加入。我尝试这样做的方式是在数据库中有一个字段,它将知道a播放器是否在该页面中,并等待下一个播放器。我读了一些关于长轮询的内容,但不确定如何在我的案例中实现它


任何反馈都会很有帮助,谢谢

首先,您需要javascript或一些客户端代码来处理此问题。因为php将在服务器端执行,然后显示给用户。如果将ajax与javascript结合使用,则可以让客户端和服务器端协同工作

您需要使用while循环,在这个循环中您将设置一个while

在while循环中,您可以调用所需的脚本,直到得到所需的结果。我假设你打算让这场比赛成为一场球员们的逐回合比赛。如果玩家1或玩家2在游戏中,您需要一个设置“true”的表。如果双方都轮到了,游戏就开始了


希望这个逻辑有帮助,PHP不是最好的语言,但是如果你还想这样做的话

研究如何使用Ratchet(),这是一个PHP websocket库。websocket是全双工的,这意味着服务器和客户端之间的连接保持打开状态。然后,游戏状态和玩家行为可以通过这种方式进行沟通


这是一个你可以学习的例子。

你可能正在寻找一个web套接字。如果你坚持将播放器和房间保存在db中,并且只用PHP连接播放器(没有IPC或WebSocket等),那么你需要一个循环,比如
(10次){sleep(1秒);If(在这个房间中选择\u players()==2){print“ok”;return;}
一个播放器(又名http请求,又名php进程)等待另一个播放器的地方。现在就来看看,谢谢您的反馈