我需要一些帮助...
这是一种Rails 3.0.15伪代码来解释我的问题:
progress_bar = ProgressBar.create
record = Record.new
10000.times.do
record.bodies.build
progress_bar.inc
end
record.save
代码创建了10000个记录体,但是它们被包装在一个事务中,因此它们会立即被提交,这很好。
ProgressBar.create表中的记录,inc应该递增一个计数器,因此js进度条可以从表中读取当前计数并更新进度,但由inc触发的ProgressBar更新被捕获在记录交易,并用10000条记录提交......没用!
如何在不提交整个事务的情况下强制更新事务中的任何想法?
或者我可以使用哪种替代存储来保存进度条当前位置?
此致
答案 0 :(得分:0)
Realtional数据库通常无法在事务内部进行写入,因此您的选择是以某种方式发送消息,以便另一个数据库连接将处理进度条,或者(这会更容易,更好,imo)存储您的进度将数据添加到Redis或Memcached等其他内容中;它们专为此用途而设计。