asp并发请求/线程的困惑(ASP高手请进)
请不要告诉我用什么事务处理那些网上搜来的答案,我这里不是需要那样的功能,请仔细看问题.这里涉及到多个客户端的并发/线程:因程序需要,现急需实现类似这样的功能:某用户浏览某...
请不要告诉我用什么事务处理那些网上搜来的答案,我这里不是需要那样的功能,请仔细看问题.这里涉及到多个客户端的并发/线程:
因程序需要,现急需实现类似这样的功能:
某用户浏览某ASP页面,这个页面需要:
1.首先到数据库中取一个满足条件的记录(例如取得某记录的某字段值A),
2.根据这个值A去执行一段ASP程序代码.并返回一个值B
3.更新刚才查到的这条记录的字段,设置其值为B.
程序流程大到如下:
<%
1.SQL select .....返回某记录中的某字段值A
2.................执行某段ASP代码返回B
3.................更新刚才取得的记录设置字段的值为B
%>
单看这个逻辑很简单,但现在的问题是我在取出值A之后到更新为值B之前这段时间之内(虽然这段时间短得可以乎略不计),是不允许任何其它人进行第1步的查询操作的(或者说不允许并发执多线程执行这三段代码),即其它对本页的并发请求必须等待当前这个用户更新了记录之后才能执行第1步的查询操作.
在java中有类似的synchronized, wait等等.在asp中这个应该怎么解决,请ASP高手指点.弄了java来搞asp,迷茫了......
一楼的老兄,这是多个用户的并发请求,这些状态设置是不能对多个用户共享的.除非用application.但是怎么像java那样wait.
不是说A用户执行时就向B用户发送不可执行的信息,而是让B用户等待wait,等A完成了B再继续,这一过程是程序控制的,不是让用户真地去等. 展开
因程序需要,现急需实现类似这样的功能:
某用户浏览某ASP页面,这个页面需要:
1.首先到数据库中取一个满足条件的记录(例如取得某记录的某字段值A),
2.根据这个值A去执行一段ASP程序代码.并返回一个值B
3.更新刚才查到的这条记录的字段,设置其值为B.
程序流程大到如下:
<%
1.SQL select .....返回某记录中的某字段值A
2.................执行某段ASP代码返回B
3.................更新刚才取得的记录设置字段的值为B
%>
单看这个逻辑很简单,但现在的问题是我在取出值A之后到更新为值B之前这段时间之内(虽然这段时间短得可以乎略不计),是不允许任何其它人进行第1步的查询操作的(或者说不允许并发执多线程执行这三段代码),即其它对本页的并发请求必须等待当前这个用户更新了记录之后才能执行第1步的查询操作.
在java中有类似的synchronized, wait等等.在asp中这个应该怎么解决,请ASP高手指点.弄了java来搞asp,迷茫了......
一楼的老兄,这是多个用户的并发请求,这些状态设置是不能对多个用户共享的.除非用application.但是怎么像java那样wait.
不是说A用户执行时就向B用户发送不可执行的信息,而是让B用户等待wait,等A完成了B再继续,这一过程是程序控制的,不是让用户真地去等. 展开
2个回答
展开全部
至于程序控制,asp里面没有太好的方法,不过可以这样,用户以ajax的方式提交,如果返回信息为锁定状态,就延时1秒再提交
////////////////////////////////////////////
为页面设置一个状态位0为可执行第一步,1为不可执行第一步.
.................................
回答者:uranusljy - 秀才 二级 3-24 11:30
这样是不行的,还是需要使用application锁定
设置一个application变量,并且用application.lock锁定,然后执行程序,然后变量恢复,解锁
这里有详细的东西,自己看看是否可行
http://blog.tom.com/shun521/article/2671.html
(Application类型的变量则可以实现站点多个用户之间在所有页面中共享信息。可以理解Session是局部变量,而Application则为全局变量。)
////////////////////////////////////////////
为页面设置一个状态位0为可执行第一步,1为不可执行第一步.
.................................
回答者:uranusljy - 秀才 二级 3-24 11:30
这样是不行的,还是需要使用application锁定
设置一个application变量,并且用application.lock锁定,然后执行程序,然后变量恢复,解锁
这里有详细的东西,自己看看是否可行
http://blog.tom.com/shun521/article/2671.html
(Application类型的变量则可以实现站点多个用户之间在所有页面中共享信息。可以理解Session是局部变量,而Application则为全局变量。)
展开全部
为页面设置一个状态位0为可执行第一步,1为不可执行第一步.
用户执行1.SQL select .....返回某记录中的某字段值A .先判断状态位是否符合可执行要求.同时再执行完之后把状态位设置为"1"(不可执行状态).这样当前页面的人就无法再次查询了.同时也可以通过状态位来给予用户相应的页面提示.
或者页面有定义字段值A的话可以直接判断A值是否为空也可以. 空就可执行第一步,不为空就不可执行第一步.
用户执行1.SQL select .....返回某记录中的某字段值A .先判断状态位是否符合可执行要求.同时再执行完之后把状态位设置为"1"(不可执行状态).这样当前页面的人就无法再次查询了.同时也可以通过状态位来给予用户相应的页面提示.
或者页面有定义字段值A的话可以直接判断A值是否为空也可以. 空就可执行第一步,不为空就不可执行第一步.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询