我正在学习使用<cfscript>.
有什么办法可以记录< cfscript>?里面的一些消息或值吗?
像<cfscript>我可以使用的外部<cflog>,有没有任何方式或标记类似的东西,我可以用来打印日志文件里面的消息>
谢谢
以下用于查找素数的代码在Adobe ColdFusion(10)和Lucee(4.5)之间的性能差异很大.在同一台机器上测试(6C i7 3930k @ 4 GHz,Windows 10 64 Bit,两个CFML引擎上的JVM内存设置相同:JDK7 -Xms512m -Xmx2048m -XX:MaxPermSize=512m):
<cfscript>
ticks = getTickCount();
stopIndex = 10000;
primes = [];
divisions = 0;
primes.add(2);
primes.add(3);
n = 5;
for (n; n < stopIndex; n += 2) {
isPrime = true;
d = 3;
for (d; d < n; d++) {
divisions++;
if (n % d == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primes.add(n);
}
}
ticks = (getTickCount() - ticks);
</cfscript> …Run Code Online (Sandbox Code Playgroud) 如何在铁路服务器中查看未交付的邮件?它在服务器管理员中是否有任何未传递的邮件文件夹?
但我无法在ralio服务器端(管理员)看到未送达的邮件.
我试图在Lucee上的组件上使用合成访问器(虽然这个问题在ColdFusion上似乎也是一样的).
Repro代码:
// Person.cfc
component accessors=true {
property firstName;
property lastName;
function init(firstName, lastName){
variables.firstName = arguments.firstName;
variables.lastName = arguments.lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
和调用代码:
// person.cfm
person = new Person("Abigail", "Bowen");
writeDump(person);
Run Code Online (Sandbox Code Playgroud)
注意我在这里没有使用合成访问器,我纯粹是将参数值设置为同名变量范围的变量.
但是,当我运行此代码时,我看到:

请注意如何填充属性.这没有问题,但我显然不明白accessors旗帜应该如何运作.我认为它只是为了为我(它有)合成一些存取方法,但这就是全部.
另请注意,如果我将CFC定义修改为不将访问器设置为true,则转储显示如下:

因此没有合成访问器(如预期的那样),但现在甚至没有显示属性(使用变量范围值或不具有变量范围值).
我真的不明白"属性"和访问者设置的这种混淆吗?当然,访问者设置应该只影响是否创建了这些访问器方法?
如果我只是在其中一个平台上看到这个,我可能会把它归结为如何writeDump()解释属性定义的变幻莫测.但是ColdFusion 11的行为是一样的,所以看起来我的行为似乎有些不同.
有谁能解释一下?有没有解释它的文档?如果不是......嗯...为什么不呢?
我的基本担忧是,属性值没有"正确"存储,并且一旦我实现了更多的代码,可能会给我带来问题.
更新:至少在ColdFusion上,它似乎只是一个writeDump()行为的改变,因为如果有属性的getter(无论是否accessors设置了标志),那么属性值开始显示在转储中.但是Lucee的情况并非如此,所以那里仍然存在问号.
为了充分披露,这个问题是我在博客上提出的一个问题的摘要(" CFML:试图理解访问者 ").复制是故意的,因为我的博客与本网站的受众不同.
哪些基于CFML的活动框架可用于ColdFusion/Lucee?
请注意:这是一个社区维基问答,因为这是一个非常多的问题.
我最近安装了Lucee,不记得我为服务器管理员设置的密码(luceee/admin/server.cfm).
如何重置服务器管理员密码?
我有一个您登录的网页,然后创建一个会话变量,该变量在所有后续页面访问中检查,如果它不存在或与记录的会话ID不匹配,则会被踢出页面.
代码在这里:
Application.cfm会话设置:
<CFAPPLICATION NAME="myAPP" APPLICATIONTIMEOUT="#CREATETIMESPAN(0,0,60,0)#" sessionTimeout=#CreateTimeSpan(0, 0, 20, 0)# sessionManagement="Yes">
Run Code Online (Sandbox Code Playgroud)
检查会话变量集:
<CFLOCK TIMEOUT="30" THROWONTIMEOUT="no" TYPE="Exclusive" Scope="session">
<CFSET session.started = #ucase(dbGUID)#>
</CFLOCK>
Run Code Online (Sandbox Code Playgroud)
现在,该页面还通过JQuery的load()方法每隔几秒将数据加载到不同的DIV中,来自不同的后端页面.对于一些完全没有问题的人来说这一切都很好,但是有些人可以在几分钟到几个小时内完成任何工作,然后突然Lucee会生成一个新的会话,导致数据加载回主页面强制主页刷新,以便您可以重新登录.然而,发生的情况是页面刷新并且原始会话仍然实际存在,因此然后再次使用,然后该人员能够再次看到页面数据.对于某些人而言,这可能会发生很多次,而对于其他人则不会.
我确信这不是个人的,因为在同一个人的不同PC上尝试它对一些人来说是好的,而对其他人则没有.直接在Web服务器上尝试(带有指向本地的域的hosts文件),它没有问题.它似乎不是负载均衡器,因为它在负载均衡器上下都会发生.为了清楚起见,它不是导致新会话的1个特定页面,它可能是任何正在使用的页面,它也不是由于第一次尝试访问页面而导致的,因为它可能在访问之前被访问了几十次正在生成新会话.它也不是超时,因为会话超时设置为20分钟,但它可能在原始会话设置的一分钟内发生.
问题是为什么Lucee突然决定创建一个新会话(旧的会话仍然存在),我怎么能阻止它和/或让它再次使用原始会话返回.
我希望使用ColdFusion的替代方案.在研究Railo时,我找到了指向Lucee的指针.似乎没有任何文档解释如何为Lucee设置Linux/Apache/Tomcat/MySQL平台,然后在其上安装Lucee.我已经尝试为Railo设置这样一个平台,但是试图让Railo通过http和https与Apache交谈.
我希望避免使用包含Tomcat的"all in one"安装程序,因为我想使用yum来使Tomcat保持最新的安全补丁.
如果我只是忽略了Lucee文档,有人可以指点我吗?如果它们不存在,怎么能"翻译"Railo文档与Lucee合作,并使Apache-Lucee连接工作?
更新2016-04-06:感谢所有回答的人.看起来你已经帮助了很多人!我从未能让Lucee跑步,但这是因为时间不够,而不是缺乏指示.权力也决定转向外包网站设计和托管解决方案,赢得竞标的公司使用Drupal.
我正在将一个非常古老的应用程序(目前在CF8中运行)迁移到Lucee.但是我遇到了一个似乎是某种自定义标签的问题.
我已经尝试确保旧安装和新安装的IIS中的所有虚拟目录都相同.并确保CFIDE和Lucee Admin中的映射和自定义标记路径相同.
但是我收到了这个错误.并且无法弄清楚这cflink是如何被实例化的.
我很长时间没有使用自定义标签,但认为它们通常用下划线调用,代码应该更像是<cf_link pageid="#LinkPageID#" Init="start">如果它被称为自定义标签.
如果我去运行此应用程序的当前CF服务器,我可以发现已创建cfclass文件
在名为"tags"的目录中名为cflink.cfm的文件中,即使"tags"目录似乎没有映射,也不在管理员的"自定义标记路径"下列出.
这个应用程序是从2003年开始的,你可以想象已经发展成为意大利面条代码的不匹配,从一开始就没有人问这个标签是如何实例化的.
有遗留代码经验的人是否有任何其他想法,我应该尝试让它工作?目前只有一个生产环境,如果我能让它在Lucee上工作,它不仅是一个在10年内不存在的开发环境,而且对我来说能够继续展示Lucee是一个很好的方式一个伟大的CFML引擎
添加附加信息
Leigh曾询问init是否可能是jar引用,但是在cflink.cfm文件中我看到了这段代码:
<cfif Attributes.Init IS "start">
<cfset Request.PageID = Attributes.PageID>
<cfset Request.Page_Width = Variables.qParentInfo.Page_Width>
<cfset Request.Page_Height = Variables.qParentInfo.Page_Height>
<cfset Request.Page_TypeID = Variables.qParentInfo.Page_TypeID>
<cfset Request.AddPath = "">
<cfif IsDefined("Attributes.Anchor")>
<cfset Request.Anchor = Attributes.Anchor>
<cfelse>
<cfset Request.Anchor = "">
</cfif>
<cfset Request.IsInternalLink = false>
<cfexit method="EXITTAG">
</cfif>
Run Code Online (Sandbox Code Playgroud)
在tags\cflink.cfm中的代码中也引用了cflink
<cfif Len(Variables.qParentInfo.ParentID) GT 0>
<!--- Add the page title to the end of the path --->
<cfset Request.AddPath …Run Code Online (Sandbox Code Playgroud) 我是S3的新手,需要将它用于图像存储.我找到了半打版本的s2wrapper用于cf,但似乎v4的唯一一套是由Leigh修改的一套
https://gist.github.com/Leigh-/26993ed79c956c9309a9dfe40f1fce29
放在com目录中并创建一个包含以下代码的"测试"页面:
s3 = createObject('component','com.S3Wrapper').init(application.s3.AccessKeyId,application.s3.SecretAccessKey);
Run Code Online (Sandbox Code Playgroud)
所以我改变了第37行
variables.Sv4Util = createObject('component', 'Sv4').init(arguments.S3AccessKey, arguments.S3SecretAccessKey);
至
variables.Sv4Util = createObject('component', 'Sv4Util').init(arguments.S3AccessKey, arguments.S3SecretAccessKey);
我觉得要通过Leigh代码并开始改变事情是一个坏主意,因为我在这里潜伏了一年,知道Leigh的代码是可靠的.
有没有人知道是否有任何关于如何在任何地方使用它的例子?如果不是我做错了什么.如果它有所作为我使用的是Lucee 5而不是Adobe的CF引擎.
更新:
我按照Leigh的指示,错误现在消失了.我在我的测试页面添加了更多代码,现在看起来像这样:
<cfscript>
s3 = createObject('component','com.S3v4').init(application.s3.AccessKeyId,application.s3.SecretAccessKey);
bucket = "imgbkt.domain.com";
obj = "fake.ping";
region = "s3-us-west-1"
test = s3.getObject(bucket,obj,region);
writeDump(test);
test2 = s3.getObjectLink(bucket,obj,region);
writeDump(test2);
writeDump(s3);
</cfscript>
Run Code Online (Sandbox Code Playgroud)
Leigh如果你还在附近或者有人如何使用s3Wrappers中的任何一个建议或指导?
更新#2: 即使在Alex的帮助下,我也无法让这个工作.我从getObjectLink收到的链接无效,getObject从不下载对象.我以为我会尝试putObject方法
test3 = s3.putObject(bucketName=bucket,regionName=region,keyName="favicon.ico");
writeDump(test3);
Run Code Online (Sandbox Code Playgroud)
我确实找到了这篇文章https://shlomoswidler.com/2009/08/amazon-s3-gotcha-using-virtual-host.html但它很老了,因为S3特别建议在桶名中使用点我不是这样的是相关的.显然我做错了,但我花了好几个小时试图解决这个问题,我似乎无法弄清楚它可能是什么.
lucee ×10
coldfusion ×7
cfml ×4
railo ×2
amazon-s3 ×1
email ×1
jquery ×1
performance ×1
tomcat ×1