首页 新闻 会员 周边 捐助

如何运行一长时间的程序

0
悬赏园豆:30 [已关闭问题]

Web 程序。

需要执行一个长时间的程序,大概半个小时。

虚拟主机

试了些方法,设置web.config里的超时,新开线程,System.Theading.Timer,都没成功。

(还有我测试了Application End事件,发现End事件时不时都会执行)

箭竹林的主页 箭竹林 | 初学一级 | 园豆:65
提问于:2009-01-09 15:24
< >
分享
其他回答(5)
0

如果你需要获得执行以后的结果,那么你可以使用异步调用

如果你不想获得运行的结果,你可以使用fire and forget模式。

http://www.eggheadcafe.com/articles/20050818.asp

对于你说的Application End我也觉得很怪,没有遇到过。

PS:你是怎么测试的啊?

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-09 15:32
0

像这种运行时间比较长的任务,可以做成异步的,在服务器端用一个win服务进程专门处理之类的服务,如果WEB有之类任务就直接扔给它运行,服务运行完任务后再反馈。这样可以保证WEB的稳定。类似于SQL SERVER的任务执行方式。

Enoch | 园豆:200 (初学一级) | 2009-01-09 15:52
0

采用job机制,类似一个C/S程序,脱离用户请求。

 

如果需要关联用户请求的话,这样长时间任务不建议这样做。如果要做的话。

1、设置超时配置,也许可以吧,没试过。(可行性不高,长时间的连接很可能被防火墙等中断,所以一些web im一般都将长连接控制在25秒左右)

2、如果不行的话,可以采用ajax,第一次请求启动任务(同时给出请求上下文信息),然后再用ajax定时检测任务执行状态。

5yplan | 园豆:1330 (小虾三级) | 2009-01-09 16:57
0

quartz.net

wingoo | 园豆:1513 (小虾三级) | 2009-01-09 17:23
0

1,不清楚你在执行什么操作,采集?数据库查询?

2,既然你application end事件里可以添加代码。那么当application end事件执行时你设计下,再调用一次,为了防止从头执行,你记录下程序执行到什么位置,我想这么长时间的执行操作一般都是循环式的,任务都是像似的,如采集,那你就记录下已经完成的和没有完成的,然后接着来。直到over。

张三封 | 园豆:121 (初学一级) | 2009-01-09 20:50
0

信息不足,无法回答

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-01-11 12:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册