读书人

正则取出数据 异步执行增加到数据库

发布时间: 2012-04-21 14:34:44 作者: rapoo

正则取出数据 异步执行增加到数据库,导至数据库阻塞
//循环取出正则匹配的数据

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了很多个连接),请问这种情况怎么处理,请大虾指点,我写了一个延时都没用

[解决办法]

JScript code
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();
[解决办法]
1、你说数据库阻塞你怎么知道的?
会不会是数据库连接未关闭呢?

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


[解决办法]
我一般做ajax时都是设置了一个变量判断是否正在执行ajax 如果是true就不执行 不然就传一个数组或者json给后台吧

读书人网 >asp.net

热点推荐