【问题标题】:php - execute a function just once for all usersphp - 为所有用户只执行一次函数
【发布时间】:2013-10-07 02:31:10
【问题描述】:

我正在构建一个在线多人棋盘游戏,并且我有一个创建新棋盘的功能。我需要在每一轮之后都这样做,但我似乎无法让它对所有用户只执行一次。当计时器到达 0 时,我在游戏所在的页面上调用该函数,因此它会为该页面上的每个用户执行。

因此,该函数生成一个新棋盘的次数与当时玩游戏的用户一样多,但我希望它只生成一个棋盘。

所以,我的问题是如何让 PHP 函数只执行一次,而不是打开页面的次数?

在系统上编辑:用户玩了 90 秒,然后他们等待 15 秒,同时看到回合结果,然后整个事情一次又一次地重复。如果您在回合中间进入页面,您可以选择等到新回合开始或立即进入该回合。所以我不知道在哪里调用该函数。我尝试在显示结果的暂停菜单开始时调用它,但它只是为所有用户执行该功能。它仍然有效,因为在所有执行结束时我仍然得到一个板,但这是不对的,特别是如果有被数百人玩,棋盘会产生数百次。而且,生成板子的是一个 c++ .exe,它在服务器上创建一个 XML。我从 PHP 执行那个 exe 并做一些额外的事情。

我不知道在哪里调用该函数。如你所说,我如何预渲染董事会?该功能仍然必须位于某个用户必须访问才能执行的页面上。真是令人难以置信。

我还尝试在数据库中添加信息以查看之前是否调用过该函数,但它仍然同时发生在所有用户身上。

【问题讨论】:

  • 使用 Session / COOKIE

标签: php


【解决方案1】:

我认为我们需要更多关于您所使用的系统的信息才能给出实际答案,但一般程序可能是在特定游戏中的客户第一次报告到达特定游戏的结尾时生成棋盘圆形的。将该棋盘的信息以及游戏 ID 和回合数保存在数据库表中。然后,每当同一游戏中的客户报告完成了同一回合时,将保存的棋盘发送给他们,而不是再次生成新棋盘。

【讨论】:

  • 是的,听起来这仍然是您想要做的。您每次用户加载页面时都必须为每个用户调用一个函数,只是不是“生成新的板”函数,而是调用“检查是否有此板轮已经生成”函数。
【解决方案2】:

使用数据库将您的电路板保存在

当倒计时到0时

检查数据库中是否有板,如果没有创建新板(注意,如果创建新板需要很长时间,您可以预先渲染板)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 2016-04-02
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多