是否可以在服务器上为所有连接使用一个静态变量?

我正在创建一个回合制的中文跳棋游戏。在正文中,我添加了 onload 函数,该函数向服务器发送 ajax 请求以接收连接的玩家编号。但似乎响应总是返回相同的数字。我尝试使用 ,但没有使它工作。$GLOBALS


我希望它是如何工作的:当我打开一个游戏的新窗口时,连接会得到下一个数字,简单的+1。JS代码位于主网页中,使用辛福尼。


代码的一些片段:


<body onload="getPlayerNum()">


var playerNumber = 0;

function getPlayerNum(){

    $.ajax({

        url: "http://localhost:8000/ajaxPlayer",

        method: "POST",

        data: {"playerNumber": playerNumber},

        success: function(data) {

            console.log(data);

        }

    });

}



/**

 * @Route("/ajaxPlayer")

 */

public function ajaxPlayer(Request $request){

    if ($request->isXmlHttpRequest()){

        if (isset($GLOBALS["number"])){

            $playerNumber = $GLOBALS["number"] + 1;

            $GLOBALS["number"] = $playerNumber;

        } else {

            $playerNumber = 1;

            $GLOBALS["number"] = $playerNumber;

        }

        return new Response($playerNumber);

    }

}


慕码人2483693
浏览 94回答 1
1回答

12345678_0001

全局变量(如您在 中设置的变量)仅在浏览器请求 时执行的 PHP 脚本中是“全局”变量。PHP 不会在下次调用该脚本时自动记住它们。$GLOBALS["number"]http://localhost:8000/ajaxPlayer如果您使用会话变量,例如 ,那么它将出现在您的浏览器在浏览会话期间请求的任何脚本中(默认情况下,这意味着直到您关闭浏览器)。$_SESSION["number"] = $playerNumber;然而,我猜你打算让多个玩家从不同的电脑一起玩,你需要的不仅仅是:你需要一种在不同会话之间共享数据的方法。最常见的方法是使用数据库。如果您正在Symfony中执行整个应用程序,那么您可能希望从阅读教义文档开始。
打开App,查看更多内容
随时随地看视频慕课网APP