这个问题可能与做大量的事情有关,但在这种情况下,我正在尝试发送电子邮件.
我已在新线程中设置发送过程,因此用户不会等待,并将请求超时重写为一小时.
问题是,一旦进程发送大约2000封电子邮件(通过以下代码循环约2000次),服务器就会耗尽内存,停止响应并需要重新启动.
阅读其他主题,CF应该能够很好地处理这一批电子邮件.
我考虑过的一件事是将所有对象调用更改为直接数据库查询并使用cfmail标记(我猜)删除所有对象的创建并在达到请求时构建(我猜是正在发生的事情),但我是不确定这是否会产生影响,并且如果可能的话,我真的想避免这种做法.我考虑过的其他东西是将它分成3个或4个单独的线程,但同样,不确定是否能解决问题.
有没有人遇到过这个问题,你发现什么能让处理继续进行而没有ram慢慢填满并杀死服务器?
thread name="sendBroadcastEmail" rc="#rc#" prc="#prc#" filters="#rc.filters#" email="#email#" emailSignature="#emailSignature#"{
createObject( "java", "coldfusion.tagext.lang.SettingTag" ).setRequestTimeout(javaCast( "double", 3600 ));
//get profiles that it will be sent to
var sendToProfiles = profileService.getWithFilters(rc.filters);
var mailService = getPlugin("MailService");
var emailSent = false;
var sentCount = 0;
var failedCount = 0;
//send the email (and log in profile events)
if (listFind(attributes.rc.email.action,'send')){
for ( i=1; i<=arrayLen(sendToProfiles);i++){
var profile = sendToProfiles[i];
try{
if (len(trim(profile.getPrimaryEmail()))){
var emailBody = profile.processDynamicPlaceholders(attributes.rc.email.body);
var emailBody = attributes.emailSignature.getHeader() & emailBody & …
Run Code Online (Sandbox Code Playgroud) 刚开始看一些MVC JS框架/库,他们中的大多数都期望一个RESTful API端点,让我思考......使用CF10 + ColdBox RESTful支持无法完成的CF10怎么办?反之亦然?
谢谢.
在这个例子中,我有一个叫做模型对象test.cfc
具有相关性testService.cfc
.
test
WireBox testService
通过属性声明注入.该对象如下所示:
component {
property name="testService" inject="testService";
/**
* Constructor
*/
function init() {
// do something in the test service
testService.doSomething();
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
作为参考,testService
有一个叫做doSomething()
转储出一些文本的方法:
component
singleton
{
/**
* Constructor
*/
function init() {
return this;
}
/**
* Do Something
*/
function doSomething() {
writeDump( "something" );
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,WireBox似乎testService
在构造函数init()
方法触发之后才会注入.所以,如果我在我的处理程序中运行它:
prc.test = wirebox.getInstance(
name = "test"
);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息: Error building: test …
一个简单的计费系统(在ColdBox MVC之上)正在膨胀成一个半企业的库存+配置+问题跟踪+利润跟踪应用程序.他们似乎在做自己的事情,但他们共享许多东西,包括一个共同的客户和员工池(登录),以及其他混合的数据和业务逻辑.
你如何保持这种系统模块化?从维护,可测试性和可重用性的角度来看?
您想分享的任何想法和/或经验?
我正在使用ColdBox和ColdFusion 10.我想用setView()传递一个参数说id = 1000 .我找不到任何传递param的例子.
这是代码:
component {
// Dependency Injection
property name="requestService" inject="RequestService";
function index(event, rc, prc) {
var response = requestService.save(rc);
if(response.Success EQ true) {
event.setView(view="requests/success"); //Want to pass a param(int)
} else {
event.setView("requests/failure");
}
}
}
Run Code Online (Sandbox Code Playgroud) Cbauth是一个 Forgebox 模块,常用于 Coldbox 应用程序来处理用户身份验证。
要检索有关当前登录用户的信息,您可以调用auth().getUser()
。此方法retrieveUserById()
在应用程序定义的用户服务类中调用。在我的例子中,retrieveUserById()
进入数据库,检索用户数据,然后返回一个组装的User
实体对象。
在我的项目中,我想在每个页面上显示当前登录用户的名字和头像。我想避免在每个页面请求时都返回数据库,因为缓存至少一些用户数据(或者甚至整个User
实体)会更有效。
Cbauth 中有没有办法在用户的会话范围内存储自定义数据,请求它,然后更新它(例如,如果用户在登录时更新他们的名字)
这是我迄今为止尝试过的:
根据文档,Cbauth 有一个调用的拦截器postAuthentication
,它确实sessionStorage
作为参数传递。我相信我可以利用它为当前用户存储额外的数据。但是,当我尝试user
在拦截器中引用时,我收到一条Element USER is undefined in ARGUMENTS
错误消息。
// After a user authenticates, store the user entity in the session (does not work)
function postAuthentication( user, sessionStorage, requestStorage ) {
arguments.sessionStorage.user = arguments.user;
}
Run Code Online (Sandbox Code Playgroud)
此外,一旦存储缓存的会话数据,我就看不到任何方法来检索它。任何帮助或指向成功实施 Cbauth 示例的指针将不胜感激!
我试图通过参数化请求 URL 的限制来实现分页,不幸的是我遇到了错误。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''25'' at line 1
这是sql语法的代码。非常需要你的帮助。
queryExecute("SELECT * FROM TABLE_NAME LIMIT :limit",{limit:rc.limit});
我应该如何使用 Coldbox 框架向应用程序添加 cfschedule 任务?
我是不是该:
a.) 编写一个执行任务的事件,并使用 Coldbox 将 cfschedule 指向该 URL?
b.) 在 Coldbox 之外写一个简单的 .cfm?
这个比那个好吗?
谢谢。
我正在开发一个冷箱应用程序,我想创建一个接受'n'个路径变量作为一个变量的路由.这就是我的意思.
http://localhost/api/variable1/variable2/variable3/...
Run Code Online (Sandbox Code Playgroud)
我希望能够/api
作为一个路径变量获取所有内容,我可以拆分/
并获取值或者能够迭代所有变量之后/api
.
有没有办法设置路线来做到这一点?
with(pattern="/api", handler="api")
.addRoute(pattern="/:variables", action="index")
.endWith();
Run Code Online (Sandbox Code Playgroud)
任何想法都将非常感激.提前致谢.