当我在Ubuntu服务器上的命令行上重新启动nginx服务时,当nginx配置文件出错时,服务崩溃.在多站点服务器上,这会放下所有站点,甚至是没有配置错误的站点.
为了防止这种情况,我首先运行nginx配置测试:
nginx -t
Run Code Online (Sandbox Code Playgroud)
测试成功后,我可以重启服务:
/etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)
或者只重新加载nignx站点配置而不重启:
nginx -s reload
Run Code Online (Sandbox Code Playgroud)
有没有办法将重启命令有条件的那两个命令组合到配置测试的结果中?
我在网上找不到这个,关于此的官方文档是相当基本的.我不太了解Linux,所以我不知道我正在寻找的是在我面前还是根本不可能.
我正在使用nginx v1.1.19.
在Coldfusion 9中,在application.cfc之外获取应用程序数据源,我已经使用过了application.getApplicationSettings().datasource
.
在Coldfusion 10中getApplicationSettings()
已被替换ApplicationGetMetadata()
.所以我很自然地尝试过ApplicationGetMetaData().datasource
,但是这个ApplicationGetMetaData()
功能目前还不行......(参见文档和评论).
所以,我怎么能在CF10的外面的Application.cfc获取应用程序的数据源名称(中的Application.cfc this.datasource)?
我正在寻找从cfscript中的不同组件动态调用方法的最佳方法.请注意,它涉及不同组件中的方法.到目前为止,我已经尝试了3种不同的方法,但它们似乎都不是我正在寻找的:
所有案例都是在组件方法中的cfscript中编写的.假设我正在尝试动态调用MyComponent组件中的setName(required string name)
方法.所有案例都定义了以下变量:
var myComp = new MyComponent();
var myMethod = "setName";
var args = {"name"="foo"};
Run Code Online (Sandbox Code Playgroud)
使用evaluate()
作业
evaluate("myComp.#myMethod#(argumentCollection=args)");
Run Code Online (Sandbox Code Playgroud)
专业人士:使用非常少的代码
缺点:代码不是很"干净",使用evaluate()似乎在在线社区中具有"邪恶"的声誉.我不希望我的代码变得邪恶.
使用cfml包装器 <cfinvoke>
invoke("MyComponent", myMethod, args);
Run Code Online (Sandbox Code Playgroud)
专业人士:我可以使用cfinvoke
cons的所有功能:它为MyComponent
每次调用创建一个新实例.
dynamicMethod
在MyComponent中创建一个方法
myComp.dynamicMethod(myMethod, args);
Run Code Online (Sandbox Code Playgroud)
myComponent的dynamicMethod:
public any function dynamicMethod(required string methodName, required struct argumentColl){
var cfcMethod = variables[arguments.methodName];
return cfcMethod(argumentCollection=arguments.argumentColl);
}
Run Code Online (Sandbox Code Playgroud)
专业人士:我终于可以直接调用myComp了.迄今为止最舒适的解决方案
缺点:我现在可以通过dynamicMethod调用MyComponent的私有方法.
(我还尝试了MyComponent之外的'function as variable'解决方案,但是函数失去了它的工作上下文.例如,如果MyComponent扩展了一个组件,'super'范围将不再引用扩展组件).
这些解决方案似乎都不是完美的,所以没有其他方法可以从不同的控制器调用动态函数吗?
如果没有,哪一个是最佳解决方案?
欢迎任何建议,谢谢.
设置邮件服务器参数时发生异常.此异常是由以下原因引起的:coldfusion.mail.MailSpooler $ SpoolLockTimeoutException:等待邮件假脱机目录上的锁定时发生超时.
最近我开始在mail.log文件中得到这个令人讨厌的异常.一旦出现此异常,从该coldfusion实例发送的每个邮件都会抛出相同的异常.
似乎唯一有用的是重启coldfusion服务器.在(通常)一两天之后,同样的异常再次出现,我们又回到了同样的情况.
我知道控制mailspool超时的修补程序,但它只是将超时从30秒增加到60秒.由于邮件发送成功直到我得到例外,我不认为这是我的解决方案.
我也阅读了adobe论坛中人们安装了修补程序的帖子,但仍然得到错误.
当这个异常出现时,我还尝试了一个脚本只重新启动邮件服务,但这对我不起作用,因为对于有这个问题的其他人没有.这也不是具体的解决方案.
<cfmail>
.这是我第一次在cfscript中发送它们.我不知道这是否与它有任何关系,但它只是因为我使用的cfscript相当于<cfmail>
我开始得到这个异常.我能找到的所有相关博文都没有答案,但也很老.我认为现在有人可能有解决方案.
谢谢.
(在Windows 2008服务器上使用coldfusion 9.0.1服务器)
为了避免嵌套的if语句并提高可读性,我想switch(true){ ... }
在Coldfusion中创建一个
语句.我经常在php中使用它,但是当我在Coldfusion中尝试这个时,我在初始化时遇到以下错误:
模板错误
该表达式必须具有常量值.
当switch case在其条件中使用变量时会发生这种情况,例如:
//this example throws the error
switch(true){
case foo == 1:
writeOutput('foo is 1');
break;
}
Run Code Online (Sandbox Code Playgroud)
使用具有常量值的switch(true){...}语句(如错误解释)确实有效:
//this example doesn't throw the error
switch(true){
case 1 == 1:
writeOutput('1 is 1');
break;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让第一个声明在Coldfusion中工作?也许对变量或某些技巧进行评估,或者这对Coldfusion来说是否明确没有?
我注意到当我调用之前包含的(cfinclude).cfm文件的函数时,此时发生的所有coldfusion导入(cfimport)都被遗忘了.这就像你没有进口任何东西.我发现这种非常奇怪的行为所以我已经将它隔离了,但结果保持不变,即使在coldfusion 10中也是如此.
我的设置:
/例
functions.cfm:
<cfscript>
function test(){
return "test";
}
</cfscript>
组件/ MyCFC.cfc:
component output="false"{}
index.cfm:
<cfscript>
include "functions.cfm";
import components.MyCFC;
foo = test();
bar = new MyCFC();
</cfscript>
此代码将抛出coldfusion错误:"找不到ColdFusion组件或接口MyCFC".当foo = test();
移除或放置后bar = new MyCFC();
,该代码将运行得很好.
如果在包含之前或之后放置导入并不重要.每当调用包含的函数时,都会忘记导入.
这是一个错误还是它应该以这种方式表现?
在coldfusion 9,0,0,251028和coldfusion 10,282462中进行了测试
我想在SalesForce中为"机会"添加一个简单的只读URL字段,其中包含指向附加到其上的15-char记录ID(用于salesforce url)的外部网页的链接.为此,我想到/ ui/setup/Setup?setupid = Opportunity - > fields并在' Opportunity Custom Fields&Relationships ' 下创建一个新字段.
我选择了数据类型为"URL"的字段并添加了默认值.我认为
"http://example.com/?sfid="&id
会做的伎俩,但这会回来
错误:此类型的公式中不能使用字段ID
这是一个模糊的错误.我的默认值语法是错误的,还是我以错误的方式使用'id'参数?什么是正确的方法呢?
我是SalesForce的新手,你可能已经猜到了.
我正在尝试从coldfusion中的pdf创建缩略图,但没有创建缩略图并且不会抛出任何异常.(coldfusion 9)我的代码:
var source = "A:\testfolder\test.pdf";
var destination = "A:\testfolder\";
createImageFromPdf(source, destination);
Run Code Online (Sandbox Code Playgroud)
createImageFromPdf函数:
public void function createImageFromPdf(required string source, required string destination,
numeric pages = 1, string resolution = "low",
numeric scale = 100, boolean overwrite = true){
var pdf = new pdf();
pdf.setSource(arguments.source);
pdf.thumbnail(pages = arguments.pages, resolution = arguments.resolution,
scale = arguments.scale, overwrite = arguments.overwrite);
}
Run Code Online (Sandbox Code Playgroud)
运行此代码后,我没有收到错误或异常,但在A:\ testfolder \中没有生成图像
我可能在这里遗漏了一些明显的东西,却找不到它.
在应用程序或异常日志中也没有创建日志记录,pdf不受保护,我确信该文件夹是可写的.所有帮助表示赞赏.
谢谢.
我很确定coldfusion没有为<cfobjectcache>
标签提供cfscript替代品,但我想知道我是否可以像<cfobjectcache action="clear">
在cfscript中那样做.有任何想法吗?
情况如下:
由于所有站点都托管在同一个位置,并且它们都具有共同的框架代码,因此我可以在服务器上轻松安装一次框架,并让每个站点使用与其框架代码相同的文件.这样我只有1个框架安装,供所有网站使用.
第二种选择是让每个站点都使用自己的框架安装.
选项1的赞成和反对意见:
选项2的赞成和反对意见:
因此选项1似乎更容易维护,而选项2更灵活.我不知道什么是最重要的.两个选项中哪一个是最佳选择?或者还有更多选择吗?
每当我使用for ... in循环时,循环的索引变量似乎总是在变量范围内.
例如,如果我有一个使用此循环的方法的组件:
for(key in params){
writeOutput(key);
}
Run Code Online (Sandbox Code Playgroud)
变量'key'将放在变量范围内.如果我已经在组件中的任何地方声明了variables.key,那么当我将它用于... in循环时,该值将被覆盖.我真正需要的是这样的:
for(var key in params){
writeOutput(key);
}
Run Code Online (Sandbox Code Playgroud)
但是这会引发解析错误.
有没有办法将for ... in index放在与变量范围不同的范围内?
coldfusion ×9
coldfusion-9 ×2
cfimport ×1
cfml ×1
command-line ×1
dry ×1
for-in-loop ×1
frameworks ×1
installation ×1
nginx ×1
oop ×1
salesforce ×1
scope ×1
ubuntu ×1