首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

正则取出数据 异步执行增加到数据库,导至数据库阻塞,该怎么解决

2012-04-21 
正则取出数据 异步执行增加到数据库,导至数据库阻塞//循环取出正则匹配的数据while ((result regPage.ex

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

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给后台吧

热点排行