gpt4 book ai didi

coldfusion CFM变量范围

转载 作者:行者123 更新时间:2023-12-03 16:00:01 24 4
gpt4 key购买 nike

我以前曾在cfm页面上问过一个关于cf范围的问题(很高兴我了解CFC范围和潜在问题),但在变量范围上仍然不清楚。

在我的上一个问题的答案中,建议使用cfm页不存在线程安全问题,并且不会出现两个不同用户访问同一页面并具有竞争条件或线程安全概率的情况(即使我只需将我的变量保留在默认的cfm变量范围内,每个用户的变量范围将被隔离且独立(这是我的最后一个问题Coldfusion Scopes Clarification)

但是,我已经阅读了此博客文章http://blog.alexkyprianou.com/2010/09/20/variables-scope-in-coldfusion/,内容涉及在cfm页上使用函数以及使用变量作用域,这似乎暗示了一个方案,其中变量作用域在多个用户之间共享(我在CFC的背景下理解了这个问题-它们更类似于Java类,变量作用域是实例变量,所以如果CFC是共享的/应用程序作用域/单例,则存在线程安全性问题,但这似乎与先前的答案背道而驰-如果变量由函数放入变量作用域在cfm页面上可以被其他用户访问,那么确定将变量直接放在cfm页面代码中的变量作用域中是否相同?

我希望能得到一些清晰的文档和指南,但实际上并不能真正找到有关不同范围和适用范围的明确解释。

谢谢!

最佳答案

Dan是正确的,问题中引用的博客文章完全是错误的。 Dan的代码演示了这一点,而我有written-up and tested this thoroughly on my blog(太大了,无法在此处找到)。

最重要的是,CFM中的变量范围不受这种竞争条件的影响,因为每个请求的变量范围都是不同的内存。因此,一个variables.foo与另一个variables.foo不同,因此两者都不相交。

变量作用域中的对象也是如此:它们的内部变量作用域是一个不同的实体,因此任何数量的请求都可以在请求的变量作用域中实例化CFC,并且CFC实例的变量作用域也都是离散实体。

变量范围可以参与竞争条件的唯一时间是存储在共享范围中的对象的变量范围。因为所有对该共享作用域对象的引用都将引用内存中的同一对象,所以同一对象的变量在内存中作用域。

关于coldfusion CFM变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15854744/

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