求助:多用户同时访问时的问题?

tonforce 2014-09-24 02:13:54
请各位大牛不吝指教,先谢过去了!
情况描述如下:

系统结构:1. 界面模块(php) -->2. 中间接口(php) --> 3. 数据库(mysql)
1. 界面模块:显示操作界面及操作结果;
2. 中间接口:负责界面模块和数据库之间的数据交换,及其他功能(跟求助问题无关,不加以描述);

大致流程:从界面模块发送http请求,该请求发送给接口模块,接口模块访问数据库获得数据,返回给界面模块;

问题来了:
界面模块有大量访问用户,这些用户可能同时发送同样的请求给接口,比如:同时编辑某一数据。

问:如何才能避免这种问题?

不知道有没描述清楚,请各大牛赐教,谢谢!
...全文
311 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonforce 2014-09-24
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
放在 中间层 比较合适 因为一般的说,中间层就是通常说的 API 加一个过滤条件比较简单 当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。 所以要单独设置缓存机制,未处理完的就不再向中间层发请求 用一个共享内存或数据库或文件的队列就可以了
太感谢了,清晰很多了,谢谢!!! 结贴,呵呵。
xuzuning 2014-09-24
  • 打赏
  • 举报
回复
放在 中间层 比较合适 因为一般的说,中间层就是通常说的 API 加一个过滤条件比较简单 当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。 所以要单独设置缓存机制,未处理完的就不再向中间层发请求 用一个共享内存或数据库或文件的队列就可以了
tonforce 2014-09-24
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
不允许同时编辑同一条记录,是业务层面的需求 业务需求的实现,应在 中间接口 中完成。如有特殊需求,也可在 界面模块 完成 你的这个需求还是应在 中间接口 中完成的
感谢版主的再次指教!谢谢“xuzuning”版主! 我描述的还不够细致,重新描述下业务逻辑: 界面层的功能包括:数据显示,数据编辑请求,操作用户的管理等,且界面层有操作用户的数据库。 中间接口层:处理界面层的请求,无视操作用户,不管哪个操作用户的操作请求,中间接口层都视为合法。 我感觉版主您的意思是在中间接口层处理,然后不管谁发过来的请求,请求过来,标识锁定,返回结果后再标识解锁? 我之前也是这样认为的,因为第一次接触php, 对方是老手,所以不敢确定。 对方非得要我在界面层来处理该业务,说用ajax就可以, 但我觉得我无法去设标识,所以困惑,才有此问。 再次感谢版主的指教!
xuzuning 2014-09-24
  • 打赏
  • 举报
回复
不允许同时编辑同一条记录,是业务层面的需求 业务需求的实现,应在 中间接口 中完成。如有特殊需求,也可在 界面模块 完成 你的这个需求还是应在 中间接口 中完成的
tonforce 2014-09-24
  • 打赏
  • 举报
回复
引用 5 楼 u011619326 的回复:
编辑的时候不需要权限么?A发的B也可以编辑么?
谢谢您的到来! 编辑的时候需要权限,但可以在线多个有权限的用户进行编辑某一条数据。
猪崽儿0o0 2014-09-24
  • 打赏
  • 举报
回复
编辑的时候不需要权限么?A发的B也可以编辑么?
tonforce 2014-09-24
  • 打赏
  • 举报
回复
引用 3 楼 wander_wind 的回复:
在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳 此时再有人想编辑,状态1就拒绝 用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间 当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0
谢谢您的回复,我有些疑惑在界面模块可以这样做吗?我曾讨教过一位做了多年php的朋友,他告诉我这没法整。 之前我也想过设置标识,因为无法操作数据库,所以放弃了。
智商众筹 2014-09-24
  • 打赏
  • 举报
回复
在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳 此时再有人想编辑,状态1就拒绝 用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间 当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0
tonforce 2014-09-24
  • 打赏
  • 举报
回复
谢谢斑竹的指教!能详细点吗?合作方要求只能在界面模块进行限制同时编辑某一数据。
xuzuning 2014-09-24
  • 打赏
  • 举报
回复
加锁 若业务上允许“同时编辑某一数据”,则以最后提交的为准 否则在收到请求时返回 xxx正在编辑

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧