正则取出数据 异步执行增加到数据库,导至数据库阻塞

smitxx 2012-04-17 03:23:13
//循环取出正则匹配的数据

while ((result = regPage.exec(strHtml)) != null) {
if (result[3] != "提示") {
$("#tta").val($("#tta").val() + pagekid+ "---" + urlpath + result[1] + "---" + result[3] + "\n");


//异步处理增加到数据库,发生数据库阻塞

$.post("JsWebPage.aspx",
{ PageId: pagekid,
PageName: result[3],
PageUrl: urlpath + result[1],
flag: "a"
},
function(data) {

}, "text"
);

}
setTimeout("", 5000); //延时

}

因为是异步处理,循环发生的太快,来不及增加到数据库,下一次循环又开始了,所以老是让数据库发生阻塞(OPEN了很多个连接),请问这种情况怎么处理,请大虾指点,我写了一个延时都没用
...全文
143 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
smitxx 2012-04-18
  • 打赏
  • 举报
回复
就是在数据库里出现很多sleeping的东西,都是一些insert into 语句
myhope88 2012-04-18
  • 打赏
  • 举报
回复
这个量应该不至于会这样子吧,还是仔细检查一下自己的逻辑
rayyu1989 2012-04-18
  • 打赏
  • 举报
回复
#10楼正解
smitxx 2012-04-18
  • 打赏
  • 举报
回复
(路人乙)提醒了我,先找出所有的数据,再一次后台处理
虎虎0369 2012-04-17
  • 打赏
  • 举报
回复
我一般做ajax时都是设置了一个变量判断是否正在执行ajax 如果是true就不执行 不然就传一个数组或者json给后台吧
  • 打赏
  • 举报
回复
1、你说数据库阻塞你怎么知道的?
会不会是数据库连接未关闭呢?

2、你应该把要插入的数据先加到一个数组。
然后再将这个数组中的数据一次性提交,这样是不是更有效率。

smitxx 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
JScript code

function submitData() {
var arr = [];
var i = 0;
//循环取出正则匹配的数据
while (i++ < 10) {
arr.push({ pageid: i, pagename: 'test' + i, pageurl: '' });
}
/……
[/Quote]

好像不支持这样定义函数内部的函数
smitxx 2012-04-17
  • 打赏
  • 举报
回复
哦,谢谢,我试试先
路人乙e 2012-04-17
  • 打赏
  • 举报
回复
后台不变
ChineseCokie 2012-04-17
  • 打赏
  • 举报
回复
建议服务器端使用线程加Queue
smitxx 2012-04-17
  • 打赏
  • 举报
回复
function postData(idx) {
if (idx < arr.length) {
$.post('jswebpage.aspx', arr[idx], function () {
postData(idx + 1);
});

}
}

请问后台提收怎么提收arr[idx]的,是一个ArraryList吗
路人乙e 2012-04-17
  • 打赏
  • 举报
回复

function submitData() {
var arr = [];
var i = 0;
//循环取出正则匹配的数据
while (i++ < 10) {
arr.push({ pageid: i, pagename: 'test' + i, pageurl: '' });
}
//异步处理增加到数据库
postData(0);

function postData(idx) {
if (idx < arr.length) {
$.post('jswebpage.aspx', arr[idx], function () {
postData(idx + 1);
});

}
}
}
submitData();
smitxx 2012-04-17
  • 打赏
  • 举报
回复
设置同步的话数据量很多,浏览器会卡死的
每一个循环都有二千条记录要增加到数据库里面
  • 打赏
  • 举报
回复
设置同步看看
$.ajaxSetup({
async : false
});
smitxx 2012-04-17
  • 打赏
  • 举报
回复
大虾们帮忙啊

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧