如何在php中每隔几秒使用打印语句和图像的功能刷新div

2024-04-23

我正在尝试构建一个主要使用 PHP 的浏览器纸牌游戏,也许还添加了一些其他有用的语言,以测试和扩展我的 PHP 知识,以及我一直想做的东西。但我读过并尝试实施的每个在线解决方案都不起作用,我不知道为什么。我有这样的逻辑:

//find game form
        print "<form method='post' action='game.php'>
        <label>Enter host generated game #</label><br>
        <label><input type='text' name='gamenumber'></label><br>
        <label><input type='submit' name='findgame' value='FindGame'></label><br><br>
        </form>";

        //host game button
        print "<form method='post' action='game.php'>
        <label><input type='submit' name='hostgame' value='HostGame'></label>
        </form>";

//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 "<div id='quote'>"; //populate host just disappears <meta http-equiv='refresh' content='5' />

        //populates self and opponents in hosts perspsective
        populatehost($roomnumber); 

        print "</div>";


    }

    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 "<form method='post' action='game.php'>
        <label><input type='submit' name='startgame' value='StartGame'></label>
        </form>";

        //populates self and opponents in finds perspsective
        populatefind($roomnumber); 

    }


    if(isset($_POST['startgame'])) //this processes after user submits data.
    {
        print "<br>Game started.<br>";

        print "heads or tails?\n\n";

        print "<form method='post' action='game.php'>
        <label><input type='text' name='headstails'></label><br>
        <label><input type='submit' name='select' value='Select'></label><br><br>
        </form>";

        //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 函数。

?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js%22%3E%3C/script%3E">
    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)
    })
</script>

</body>
</html>

所以我能够为主持人和发现者打印字段,一旦发现者翻转硬币,它就会从他们的角度说谁先走……但我很难让它出现在其他玩家的角度上。我正在考虑通过使用执行所有打印的函数刷新 div 来实现这一点,但无论如何似乎都不起作用。我以多种不同的方式尝试了 php sleep 方法,我尝试了一些 jquery 函数,但没有任何效果。顺便说一句,填充主机和填充查找只是具有基于变量数组的巨型表的函数。


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

类似问题:Link https://stackoverflow.com/questions/9593558/multiplayer-php-game-socket-programming

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

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

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

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

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

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

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

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

将 WebSocket 与 Php 结合使用的 GitHub 项目:Link https://github.com/krazyjakee/Mystalia-Engine

你可以在这里看到一些套接字演示 https://socket.io/demos/chat/

这是一个存储库,其中包含我之前尝试 Socket 时运行的一些测试 https://bitbucket.org/moreirapontocom/sockets

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在php中每隔几秒使用打印语句和图像的功能刷新div 的相关文章

  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Jquery 验证不能正确验证数字?

    我在使用 jquery 非侵入式验证验证数字时遇到问题 我使用的版本是 ASP NET MVC 3 jQuery 1 9 1 jQuery 用户界面 1 10 1 JQuery 验证 1 11 0 我试图验证的输入是
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • Javascript/Jquery:确定用户是否使用鼠标滚轮、滚动条或键盘滚动

    我正在尝试让用户界面正常工作 如果他们使用鼠标滚轮 我需要让它以一种方式滚动 如果他们使用滚动条 我需要让它以另一种方式滚动 如果他们使用键盘 我需要让它以另一种方式滚动 我相信滚轮和滚动条都充当鼠标事件 但是当单击滚动条时我无法让 jav
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • CSS:将“float:right”元素移动到顶部(与列表的第一个元素对齐)

    我有一系列元素 最后一个元素有 css float left 我想将其显示在与第一个元素相同的高度 而不是显示在列表的底部 我无法更改 html 代码 因此它是列表中的最后一个 同时 我想将其保留在右侧 我怎样才能用CSS制作它 thank
  • JPA 枚举 ORDINAL 与 STRING

    可以使用以下任一方式在 JPA 中定义枚举 Enumerated EnumType ORDINAL or Enumerated EnumType STRING 我想知道这两个定义的优点和缺点是什么 我听说 ORDINAL 在 Eclipse
  • 为 AlertDialog 的进入和退出设置动画

    我必须滑入AlertDialog当它进入时 当它消失时 将其滑出 但它不是动画 那么如何让动画发挥作用呢 这是我所拥有的 public class SlideDialogFragment extends DialogFragment Ove
  • 将文件读入多维数组

    我想从文件中读取数字 n n 网格并将它们复制到多维数组中 一次一个 int 我有读取文件并将其打印出来的代码 但不知道如何获取每个 int 我认为我需要 splitstring 方法和空白分隔符 才能获取每个字符 但在那之后我不确定 我还
  • 创建子列表并从上一个列表中删除值

    我想在 Java 中创建一个子列表 并从上一个列表中删除子列表中的值 我的程序正确创建了子列表 但它没有从前一个列表中删除正确的值 My code for int i 0 i lt 4 i List sub new ArrayList pr
  • 在 django admin 中更改字段名称

    我正在自定义 django admin 我想更改字段的显示名称 我认为答案是here https docs djangoproject com en dev ref contrib admin 但我找不到它 感谢 Meta 类 我已经更改了
  • 同一解决方案中的 ASP.NET Core 5 MVC/Razor Pages 和 Web API 项目

    许多网站分为两部分 www example com 公众MVC https learn microsoft com en us aspnet core mvc overview view aspnetcore 5 0 剃刀页面 https
  • Spark Streaming:如何在 Python 中获取已处理文件的文件名

    我对 Spark 老实说也是 Python 有点菜鸟 所以如果我错过了一些明显的东西 请原谅我 我正在使用 Spark 和 Python 进行文件流处理 在我做的第一个示例中 Spark 正确地侦听给定目录并计算文件中单词的出现次数 因此我
  • ScrollViewer 和 TextBlock 换行

    我有以下布局 简化
  • 无法在 C++ 中使用宏定义类

    我想生成许多几乎没有什么区别的子类 所以我想使用宏来简化我的工作 宏定义如下 define DECLARE SUB CLASS sub class name base class name value1 class sub class na
  • 在哪里可以找到用于 EJB 测试的完整 Maven Cargo 插件示例?

    对于一些小型 JBoss 企业应用程序的测试 我想使用 JUnit 并且Maven 货物插件 http cargo codehaus org Maven2 plugin 我知道还有 JSFUnit 但首先我想仔细看看 Cargo 网上是否有
  • React Hook 依赖项 - 通用 Fetch Hook

    我已经遵循了许多关于如何设置自己的自定义通用的教程useFetch钩 我想出的方法效果很好 但它违反了一些 Hook 规则 大多数情况下 它不使用 正确 的依赖项集 通用挂钩接受 url 选项和依赖项 设置依赖关系 因为所有三个都会创建无限
  • 无法在 Visual Studio 代码中缩小

    我不小心按了 CTRL 我的 IDE 现在缩放太多了 我尝试了官方 vscode 文档中所述的缩小快捷方式 CTRL 但这不起作用 一些帮助将不胜感激 Thanks 屏幕键盘不适合我 但设法点击reset zoom视图 gt 外观 gt 重
  • 根据日期范围增强文档

    我能够根据日期过滤文档 但我真正需要的是提高某些日期范围 以下查询返回结果 queryType full search priority High 50 Normal 10 AND type one 1 two 10 filter type
  • DebugDiag 在 .NET 4 下不显示 .NET 堆栈信息

    感觉这个问题可能有一个简单的答案 但我一直找不到 所讨论的场景是 C NET 控制台应用程序 我通常使用 DebugDiag 1 2 来检查来自我们遇到的挂起的 dmp 文件 通常是线程锁定问题 它们是使用 DebugDiag 的 创建完整
  • ORB 演示代码出现 cv2.error 错误:来自 OpenCV 代码的未知 C++ 异常

    ORB 演示代码位于https opencv python tutroals readthedocs io en latest py tutorials py feature2d py orb py orb html https openc
  • 为什么会收到 Net::HTTP“请求路径为空”错误?

    我正在使用 Net HTTP 发出 HTTP 请求 我收到错误 HTTP 请求路径为空 但我强烈地感觉到事实并非如此 代码如下 REQUEST IP localhost REQUEST PORT 8081 REQUEST PATH mywe
  • 如何在 Linq 中执行 SQL Like %?

    我有一个 SQL 过程 我试图将其转换为 Linq SELECT O Id O Name as Organization FROM Organizations O JOIN OrganizationsHierarchy OH ON O Id
  • 将数据库从 genymotion 模拟器拉到本地磁盘

    我在开发中使用 genymotion 当我创建数据库时 我在 genymotion 模拟器的 DDMS 文件夹中看不到它 在 google 上搜索时 我可以在 adb shell 上看到数据库 但不知道如何将数据库拉到本地磁盘以查看数据 有
  • 如何在php中每隔几秒使用打印语句和图像的功能刷新div

    我正在尝试构建一个主要使用 PHP 的浏览器纸牌游戏 也许还添加了一些其他有用的语言 以测试和扩展我的 PHP 知识 以及我一直想做的东西 但我读过并尝试实施的每个在线解决方案都不起作用 我不知道为什么 我有这样的逻辑 find game