欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

多用户同时访问时的有关问题

程序员文章站 2022-05-16 15:51:19
...
求助:多用户同时访问时的问题?
请各位大牛不吝指教,先谢过去了!
情况描述如下:

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

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

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

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

不知道有没描述清楚,请各大牛赐教,谢谢!
------解决思路----------------------
加锁

若业务上允许“同时编辑某一数据”,则以最后提交的为准
否则在收到请求时返回 xxx正在编辑
------解决思路----------------------
在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳
此时再有人想编辑,状态1就拒绝
用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间
当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0
------解决思路----------------------
多用户同时访问时的有关问题编辑的时候不需要权限么?A发的B也可以编辑么?
------解决思路----------------------
放在 中间层 比较合适
因为一般的说,中间层就是通常说的 API
加一个过滤条件比较简单

当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。
所以要单独设置缓存机制,未处理完的就不再向中间层发请求
用一个共享内存或数据库或文件的队列就可以了

多用户同时访问时的有关问题

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频