芯友网xin1234.com

比如客户端发起一个请求   但是服务器响应要10秒   但是用户在第5秒就关闭了浏览器   那么能不能这时候服务器停止内部的逻辑处理   



深圳--付
比如客户端发起一个请求   但是服务器响应要10秒   但是用户在第5秒就关闭了浏览器   那么能不能这时候服务器停止内部的逻辑处理    节约资源
情傷
这个我没试过
深圳--付
突然想到的  
情傷
@我来自台湾 台湾兄来解答一下
深圳--付
台湾兄好久没来了吧
我来自豪宅
谁说的
深圳--付
是不是那边的网络被限制了
我来自豪宅
昨天还问他问题呢
深圳--付
好吧   眼神不好
我来自豪宅
错了是27号
白金-白菜
台湾兄???
Fierce eagle
浏览器关了以后,代码还继续运行
因为http是无状态的
深圳--付
继续运行 我知道
Fierce eagle
服务器不知道你关没关
深圳--付
但是能不能获取到客户端放弃等待   然后结束逻辑处理
应该是可以的   不过这是底层
Fierce eagle
理论上可行,真做太麻烦
深圳--付
这上面说http是在 tcp/ip  之上   那么tcp/ip会先断开
我来自豪宅
用websocket?
深圳--付
不是
单纯http
我来自豪宅
@Fierce eagle 你要达到的是不是检测用户浏览器关闭
Fierce eagle
因为每个http请求都会开一个新进程
深圳--付
@我来自豪宅 是的
我来自豪宅
你的什么功能需要这样?
深圳--付
比如客户端发起一个请求   但是服务器响应要10秒   但是用户在第5秒就关闭了浏览器   那么能不能这时候服务器停止内部的逻辑处理    节约资源
Fierce eagle
根本不知道要关哪个进程
深圳--付
应该是知道的
我来自豪宅
先说下你的功能需求
我来自台湾
不能
风轻云淡
无状态的
深圳--付
http 在tcp/ip 之上
那么http的响应结果是通过tcp/ip通道发送过去的
风轻云淡
你客户端不发请求,服务端是没办法的
我来自台湾
這問題跟SQL一樣
我来自豪宅
我觉得你的设计有问题
深圳--付
@我来自台湾  台湾哥  分析下
我来自台湾
下了SQL command後 即使暫停了
我来自豪宅
应该换个方式实现
我来自台湾
SQL內部還是持續進行
深圳--付
@我来自台湾 对呀
Fierce eagle
发请求也没办法,因为开了个新进程
/bb 7ang-_-
杀掉session
我来自台湾
之前有人問過我類似問題
我自己推測的因素是
我来自豪宅
@我来自台湾 我觉得是可以,因为可以通过http发送信息
深圳--付
如果用户放弃等待   其实服务器运算出结果也无法响应到用户那里了
我来自台湾
我這麼說好了
深圳--付
其实就没必要在继续运行了
我来自台湾
你的程序已經開始運行了
Miles
台湾哥膨胀了啊
我来自台湾
先別管web
Fierce eagle
除非你用socket通信,保持长链接
Miles
现在都当上管理员了
我来自豪宅
@Fierce eagle 不过如果是强制结束进程肯定是不行的
我来自台湾
你自己寫個thread
我来自豪宅
@我来自台湾 
我来自台湾
你要如何中斷
一個thread運行中
深圳--付
我来自台湾
你要如何中斷他
透過abort對吧
那麼問題來了
這種強制結束的做法
會不會產生後遺症
譬如程序正在寫文檔
被強制中斷
文檔就損毀了
所以基本上 asp.net無法預期你的程序會做啥事情
所以他不可能這樣搞
linkin↑park
我问的...
深圳--付
我主要是想   如果一个比较耗费资源的请求   发起了很多   但是用户放弃了等待
我来自台湾
可以做到的
深圳--付
比较浪费服务器的资源  
我来自台湾
但不是從web程序處理
linkin↑park
@Fierce eagle 这个回答 你够了
我来自台湾
我現在做法是這種長時程運行的程序
用quartz在背景運行
Fierce eagle
换个角度想,假如你不用浏览器直接通过程序请求
我来自台湾
quartz提供可以job中斷的方法
job去實現即可
深圳--付
6666
我来自台湾
在web的程序不適合長時間運行
要做長時間運行的程序
我来自豪宅
@深圳--付 如果你要求不高可以在浏览器关闭页面发送信息要求终止
我来自台湾
一定是背景運行
把http當作一個命令請求器去看待
高併發問題也是如此
如果要在一個request就把所有事情完成
是有問題的
深圳--付
那一般怎么处理
白金-白菜
我来自台湾
都是異步機制
深圳--付
目前基本上都是等一个request处理所有逻辑
异步是有使用的
白金-白菜
台湾哥V5
Fierce eagle
有这想法还不如想办法优化响应时间
优化下数据库什么的
我来自台湾
我說的异步 不單單指同一進程
深圳--付
@Fierce eagle   优化是有极限的
中间件这块是吧
我来自豪宅
@深圳--付 你能说说你想实现什么功能码?
深圳--付
@我来自豪宅 我的天   讲了这么   你还不知道说啥么  
你翻下聊天记录
我来自豪宅
我没看你上面说的
我翻翻
我只知道你想判断浏览器关闭然后去中断服务器上的任务
你是想导出文档吗
Fierce eagle
就是说电脑突然断电也要终止服务器任务
深圳--付
对呀   文档就是这个
  你们聊天记录慢慢看吧
我来自豪宅
如果不要求判断断点这种情况,我觉得你用浏览器关闭事件就行了
断电
最好的肯定是台湾哥那种做法
不然页面跳转什么的你都要处理
深圳--付


@我来自台湾   台湾哥  Quartz  是针对java的吧   你不是做net吗?
我来自台湾
quartz有.net版本呀
我来自豪宅
我之前公司做一个视频播放,要记录用户看到哪里,为了防止断电什么的情况,然后前台每10秒左右就要发个请求到服务端,那并发
有点可怕
深圳--付
然后呢
我来自豪宅
@我来自台湾 quartz对这种情况适不适用?
然后专门放了服务器用来给这个请求连接好像
我来自台湾
還有個東西
專門處理這事情的
Hangfire 
這種問題早有人搞了...
Hangfire連UI都幫你做好了
就是用來處理web長時程運行的問題
深圳--付
这玩意挺火的吧
前几天看到了   打算这几天深入研究呢
popasp开源mvc框架,支持mssql mysql
@我来自豪宅 记录到cookie不就行了?
我来自豪宅
断电你能记录啥
而且观看进度要记录到服务端
popasp开源mvc框架,支持mssql mysql
每隔一段时间记录到cookie
发到后台的时候先保存到内存中
我来自豪宅
用户可能回家登录账户啊
所以一定是要存到服务端
popasp开源mvc框架,支持mssql mysql

我没有做过视频系统
我来自豪宅
我也没,那块不是我做
@我来自台湾 我看了下,Hangfire好像是后台定时执行任务
我要返回前台视频的观看进度呢?
popasp开源mvc框架,支持mssql mysql
我做过投票系统,是将数据先记录到内存,走了量外保存到数据库
我来自台湾
Hangfire我不是很了解
我来自豪宅
是不是用Hangfire也能办到捕捉浏览器关闭前执行
我来自台湾
因為我用quartz
我来自豪宅
哦好的
quartz能办的到吗?
我来自台湾
你這需求 我是自己搞一個機制的
深圳--付
@我来自豪宅 你那个播放的视频资源  不可以直接对视频流控制吗
我来自豪宅
你的大概思路是什么呢
@深圳--付 因为他们用的是ie的视频控件,服务端取不到进度,要是用flash就行了
深圳--付
IE的视频控件?
我来自豪宅
我不知道iis的API能不能获取到
深圳--付
自己写的?
我来自豪宅
就是那个html标签
mutudu
ActiveX?
我来自台湾
瀏覽器播影片
早期瀏覽器梅支持串流
所以在標準情況下無法做串流
只能整個檔案下載後 才能撥放
因為早期沒支持
所以要跨過瀏覽器處理
因此得靠flash activex這些插件
簡單來說就是自己搞
而html5已經有串流協議
所以這也是為什麼現在是頻網站都改用html5
因為flash activex這種技術不是所有平台都支持
即使支持對於開發的成本太高
畢竟不是標準

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容