gpt4 book ai didi

PHP 与 ASP.NET 静态变量

转载 作者:可可西里 更新时间:2023-11-01 12:53:33 27 4
gpt4 key购买 nike

ASP.NET 中的静态变量今天让我措手不及。然后我吓坏了,因为这意味着要么我对 Web 世界中的静态变量有根本性的误解,要么 ASP.NET 的行为并不像我想象的那样。

在 ASP.NET 中

public class MyClass {
public static bool myVar = true;
}

如果 ASPUserA 设置 MyClass.myVar = false,系统上的所有其他用户都会体验到这些更改。因此,ASPUserB 将有 myVar = false。我的来源:http://www.foliotek.com/devblog/avoid-static-variables-in-asp-net/

class MyClassPHP {
public static $myVar = false;
}

如果 PHPUserA 设置 MyClass::$myVar = true 这是否意味着系统上的每个用户都会经历这些变化???

谢谢。


经过进一步研究,我这样做了;

class MyClassPHP {
public static $myVar = 0;
}

然后我让访问页面的用户执行此操作

MyClassPHP::$myVar++;
echo MyClassPHP::$myVar;

它始终是 1。无论我刷新多少次或同时连接多少次...哇哦,这是一个很好的结论,否则我就完蛋了!!


ASP.NET 更新

经过进一步的研究和测试,我发现了这一点。

public partial class MyPage : System.Web.UI.Page
{
public static int myInt = 0;

protected void Page_PreInit(object sender, EventArgs e)
myInt++;
}

}

然后我的页面可以显示myInt

在浏览器(Firefox 和 chrome)之间,随着我刷新页面,myInt 逐渐变高。因此,如果您的 classstatic,这并不重要。仅当您有静态变量时才重要。它们是应用广泛的。

最佳答案

在 IIS 中运行时:

静态变量不是特定于“页面”的。它是特定于“AppDomain”的。与“页面”的唯一关系是变量的路径(可以这么说)(例如 MyProject.MyPage.MyVariable)。因为您的应用程序的所有用户都在同一个 AppDomain 中运行(即同一个 IIS 应用程序文件夹),所以他们都将使用同一个静态变量。所以...最终您的用户将看到彼此的信息,因为他们都共享一个静态变量。

然而,PHP 会跟踪每个用户实例的静态信息,因此我想您可以称它们为“远离单例危险区域”。

关于PHP 与 ASP.NET 静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com