【发布时间】:2014-08-04 11:14:29
【问题描述】:
我正在尝试编写一个控制面板
- 告知某些 KPIS
- 使用户能够通过按下按钮来启动某些请求/作业,然后在 DB 上运行存储的过程或设置特定设置等
到目前为止,一切都很好,除了我想运行一些更大的作业,其中作业运行的时间长度未知,并且可能在脚本超时期限和用户愿意等待的时间内运行回复。
我想要的是一个“即发即弃”的过程,这样用户点击按钮,即使他们关闭页面或关闭手机,他们也知道工作已经启动并将完成。
我正在研究 C# BeginExecuteNonQuery,它是对查询的异步调用,因此触发了 proc,但控件不必等待它的响应继续进行。但是我不知道当触发它的页面/应用程序关闭时会发生什么。
我还在考虑某种 Ajax 命令,它会在后台触发页面中的代码,因此用户不知道它正在运行,但我再次相信,如果用户关闭页面,脚本将会死掉并且该命令也会在服务器上死掉。
我知道的唯一方法是一个“队列”表,其中作业被插入到这个表中,然后每隔一两分钟就会有一个 MS 代理作业出现,检查新的插入,然后运行代码(如果有的话)。这样它就在数据库上,只有数据库崩溃会破坏它。这对等待同时运行的多个作业没有帮助,这两者都需要很长时间,但这是我唯一可以确定的,这将确保代码完全运行。
有什么想法吗?
任何语言都可以。
【问题讨论】:
-
看已经commented on your previous post 你想扩展它继续并通过编辑原件来扩展它,不要只是乱扔没有答案的问题。问题是网页总是会期待一个结果,无论它是否是异步的,那篇文章中详述的方法似乎是你最好的选择。构建一个数据库来处理请求,然后触发一些外部进程(在 SQL Server 中,您可以使用计划作业)。
标签: sql asp.net stored-procedures asynchronous asp-classic