Heim >Backend-Entwicklung >PHP-Tutorial >多用户同时访问时的有关问题

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

WBOY
WBOYOriginal
2016-06-13 12:06:571452Durchsuche

求助:多用户同时访问时的问题?
请各位大牛不吝指教,先谢过去了!
情况描述如下:

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

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

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

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

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

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn