wower1985 发表于 2011-12-14 16:20:07

列表中的数据如何并发问题。。。。。。

例如一个列表
1、XXXXXXXXXXXXXXXXXX 删除链接
2、XXXXXXXXXXXXXXXXXX 删除链接
3、XXXXXXXXXXXXXXXXXX 删除链接
。。。。。。。。
                            翻页功能
现在脚本录制,选择第一行删除,把脚本简单的处理下,关联一下删除的特征ID,单个脚本迭代的时候就是每次保存第一行id,然后传给下面的删除操作。很显然,这样脚本迭代是没问题;

但并发就问题出现了,例如:5个用户同时运行,5个人都同时到达这个列表页面,运行到关联函数的时候,保存的都是同一条记录的ID,那么就只能1个人能删除,显然其他的就删除失败了,后台报错,面对这样的情况怎么办那??????大侠们怎么并发列表??

thirfing 发表于 2011-12-14 17:13:04

修改关联函数属性ord=all,可以保存当前页面上所有特征ID,通过参数化参数下标的方式,可以控制关联参数取值。

wower1985 发表于 2011-12-14 17:32:21

:victory:回复 2# thirfing

斑竹就是斑竹,牛逼!

我刚刚想的就是直接参数化,并且已经完成了并发,但是我刚这个系统是个特例,ID是可以预知并且可以控制,准备多点数据,直接参数化就OK,如果是返回的加密的ID那我刚刚用的方法就傻眼了,

斑竹提供的方法才是正解!!!!

wower1985 发表于 2011-12-14 19:37:07

本帖最后由 wower1985 于 2011-12-14 19:38 编辑

回复 2# thirfing

还是刚才的问题,就想试试斑竹说的方法,
我用关联保存当前页面列表中的所有特征ID,但是这个列表是个翻页的,一页就只有10条,我用50人并发,还是有可能失败,
我分析了下原因:50人并发,可能同时就有30个人同时到达了相同的列表,所以这30个人通过关联得到的id数组还是一样的,问题是现在30个人只有10个id,根本不够分啊!!!再肿么办????

mymagic 发表于 2011-12-15 09:48:53

列表翻页时,是从数据库中读取还是从内存的读取
就是 加载的所有数据是一次性加载到内存的吗
如果是读取数据库的话,可以把参数定义成从数据库中查找unique+once

thirfing 发表于 2011-12-15 15:02:35

回复 4# wower1985


    对比分析下翻页链接是否容易模拟,如果可以,写个循环翻页,再保存ID
或者:在数据量不太大的前提下,可以通过修改每页显示的记录数。
或者:楼上的方法

mr.bee 发表于 2011-12-15 15:17:05

从用户访问角度来看,楼主新出现的问题在用户正式环境本身就是不可避免的
列表跳转里面做个参数化随机取值可以降低出现概率,但是还是一定出现这样的问题的
概率大小而已

wower1985 发表于 2011-12-16 10:08:47

本帖最后由 wower1985 于 2011-12-16 10:12 编辑

从用户访问角度来看,楼主新出现的问题在用户正式环境本身就是不可避免的
列表跳转里面做个参数化随机取值 ...
mr.bee 发表于 2011-12-15 15:17 http://bbs.51testing.com/images/common/back.gif


也是哦,真是情况就可能是多个人来到了同一个页面,都去删除一个记录,只有一个能成功,其他的就应该提示该记录已经删除,所以我的系统后台应该不是报错,是个小问题。。

回到你说的“列表跳转里面做个参数化随机取值。。。”这个如果想要实现,怎么实现那?

我这个系统ID就是数据库中的ID,没有加密,直接?传的,我现在直接就参数化 ,连接数据库,设置分段、唯一,能保证不会出现删除同一条记录。

现在脱离我这个系统,因为我这个系统算简单的了,就传了一个值并且还是可以预知的,比较简单。
相信很多系统中的列表都不止传一个值并且还加验证值之类的,假如现在传的参数是加密后的,这时可能就用你说的“列表跳转里面做个参数化随机取值。。。”
或者楼上thirfing所说的方法,希望能讨论下好的实现方案。

v_v 发表于 2012-7-19 23:36:52

期待新的问题解决方法
页: [1]
查看完整版本: 列表中的数据如何并发问题。。。。。。