如何使用php中的print语句和图像function每隔几秒刷新一次div

我正在尝试构建一个主要是PHP的浏览器卡片游戏,也许还有一些其他有用的语言可以用我一直想做的东西来测试和扩展我的PHP知识。 但是我读过并试图实现的每个在线解决方案都行不通,我不知道为什么。 我有这样的逻辑:

//find game form print "




"; //host game button print "
"; //game logic if(isset($_POST['hostgame'])) { $roomnumber = rand(); print $roomnumber; insertField($Ausername,$roomnumber); //insert field GUI //link game to host for future field printing $query = "UPDATE game".$roomnumber." SET host='".$Ausername."' WHERE host='null'"; $result = mysqli_query($link, $query); print "
"; //populate host just disappears //populates self and opponents in hosts perspsective populatehost($roomnumber); print "
"; } if(isset($_POST['findgame'])) //this processes after user submits data. { $roomnumber = $_POST['gamenumber']; $_SESSION['gamenumber'] = $_POST['gamenumber']; //link game to find for future field printing $query = "UPDATE game".$roomnumber." SET find='".$Ausername."'WHERE find='null'"; $result = mysqli_query($link, $query); print "
"; //populates self and opponents in finds perspsective populatefind($roomnumber); } if(isset($_POST['startgame'])) //this processes after user submits data. { print "
Game started.
"; print "heads or tails?\n\n"; print "



"; //finder always starts game populatefind($_SESSION['gamenumber']); } $gameStatus=""; $flip = rand(1,2); $coin = "heads"; $gameStarted = "game not started"; if($flip==1) $coin="heads"; else if($flip==2) $coin="tails"; if(isset($_POST['headstails'])) //this processes after user submits data. { if($_POST['headstails']==$coin) { print "find game player goes first"; $gameStarted = "game started"; //notify find game player he goes first //do logic where he goes first } else { print "host game player goes first"; $gameStarted = "game started"; //notify host game player he goes first //do logic where he goes first } populatefind($_SESSION['gamenumber']); }

这是我尝试过的粘贴在页面底部的jquery函数。

 ?>  jQuery(function () { var $els = $('div[id^=quote]'), i = 0, len = $els.length; $els.slice(1).hide(); setInterval(function () { $els.eq(i).fadeOut(function () { i = (i + 1) % len $els.eq(i).fadeIn(); }) }, 2500) })    

因此,我能够为主持人和发现者打印字段,一旦取景器翻转硬币,就会说出谁从他们的角度出发,但是我很难将其显示在另一个玩家的角度。 我正在考虑通过使用执行所有打印的function刷新div来实现它,但无论如何似乎没有任何工作。 我尝试了很多不同的PHP睡眠方法,我尝试了一些jquery函数,没有任何效果。 而btw填充主机和填充查找只是基于变量数组的巨型表的函数。

您尝试实现的这类事情将使用常规Ajax调用来消耗服务器的大量资源。

类似问题: 链接

我们以两个用户之间的聊天为例:

用户的1页有一个Javascript计时器,询问每一秒的新消息: “嘿服务器,给我发新消息。” 无论是否有新消息,服务器都会处理请求,搜索新消息以回复“我现在没有消息”“这是您的新消息” 。 对于用户2也是如此。

如果两个用户都将聊天页面保持打开10秒钟,则您的服务器将收到20条新消息请求,将搜索20条新消息,并将发送20条带有新消息的回复或“无新消息”回复。 即使两个用户都没有发送任何内容,只需保持页面打开即可。 想象一下,如果有1000个用户连接到您的聊天室!

在这种情况下,最好的方法是Socket。 在同一个聊天示例中,用户1和用户2将继续收听新消息,而不是每秒都要求他们。 当用户1发送消息时,服务器将通知用户2“我有一条新消息。这是。”

如果连接了1000个用户,则完全没有问题。 服务器将新消息发送到套接字通道,并且将通知所有连接的用户。 没有延迟。

在您的具体情况下,将这样工作:播放器1和播放器2正在侦听新消息。 当玩家1点击卡片时,将触发服务器命令。 服务器将接收并发送套接字通道的消息:“嘿,等待新卡的所有人,这里是”,然后每个玩家都会收到通知。 即刻。

使用Javascript计时器的第一个场景的另一个问题是:如果增加计时器间隔,则回复将延迟传递。

套接字的另一个好处是:它独立于技术。 PHP,Java,Node等

使用WebSocket和Php: Link的 GitHub项目

你可以在这里看到一些套接字演示

这是一个存储库,其中包含我在之前尝试过Socket时运行的一些测试

你可以这样做:

 setInterval(function refresh(){ var value = Math.round(Math.random()*100); $("#target").addClass("hidden"); $("#target").html(value); $("#target").removeClass("hidden"); } , 1500); 
 .hidden { display: none; }