日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

server长时间运行query,Ajax刷新被block

發布時間:2024/9/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 server长时间运行query,Ajax刷新被block 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近有個asp.net程序,需要長時間查 詢數據庫,千萬級,且經常有reports同時運行,所以搞不好一個submit就要等1,2個小時。我把sql timeout設成無限,http request timeout設成12個小時,但是不知為什么在production server上總是運行了1.5小時后就出現page can not be displayed,后臺的query則還在運行。但是在我的desktop上運行就沒問題,3,4個小時也可以return results.

OK,那就想辦法吧,誰叫那是production server呢。
第一個想到的當然是創建extra thread,把那個query放到后臺的thread里去,查了查資料,用正規的async thread來做好像有點麻煩。因為是page can not be displayed error, 于是想到如果client page能夠時時的聯系一下server,估計就不會time out.于是就有了第一個方案。
1) create a web page with 2 frames. One is the real aspx page which will do the quer, the other one is just a dummy page that will refresh itself every, say, 1 minute. Well, it does not turn out to be very successful. The dummy refreshing page actually will stop the query aspx page for some unknown reason. So, solution #1 failed.

Then I thought about AJAX. Maybe I can use ajax to keeping talking to the server, while leaving the database query running.
2) find a quick ajax for asp.net 1.1 sample, set the javascript setTimeou() to 1 minute, and use ajax to get the current time from the server every 1 minute. Then, I got the problem as the title of this article: The ajax remote call is blocked when the long running query is running. Not sure how that happens, my guess is the long running query makes the browser TCP client thread busy waiting, and therefore it can not send another ajax request to the server. But anyway, that totally defeats my purpose to use ajax. Maybe there is another way to correctly apply ajax in this situation, but I do not think I have the time to find that out. Solution #2 failed too.
(updated: I tried ajax.net http://www.cnblogs.com/nihgwu/archive/2006/06/04/417161.html and it works, so I am going to stick with Solution #2)

3) Now, I have to go back to the multithreading way in asp.net. Fortunately, it looks like the traditional threading model still works on asp.net, so I do not have to use async thread. I am going to do this tomorrow, it looks doable after a small test, the only problem is I can not use windows integrated security to logon SQL server in the new thread. The thread's execution account is really wierd. It becomes Domain\Machinename$. Never seen that account before. So I have to use SQL server authentication instead.

(This is just to record something I encountered. And I find I am so slow typing Chinese so I switched to English.)

轉載于:https://www.cnblogs.com/cloudjun/archive/2006/06/04/417035.html

總結

以上是生活随笔為你收集整理的server长时间运行query,Ajax刷新被block的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。