请各位大牛不吝指教,先谢过去了!
情况描述如下:
系统结构:1. 界面模块(php) -->2. 中间接口(php) --> 3. 数据库(mysql)
1. 界面模块:显示操作界面及操作结果;
2. 中间接口:负责界面模块和数据库之间的数据交换,及其他功能(跟求助问题无关,不加以描述);
大致流程:从界面模块发送http请求,该请求发送给接口模块,接口模块访问数据库获得数据,返回给界面模块;
问题来了:
界面模块有大量访问用户,这些用户可能同时发送同样的请求给接口,比如:同时编辑某一数据。
问:如何才能避免这种问题?
不知道有没描述清楚,请各大牛赐教,谢谢!
回复讨论(解决方案)
加锁
若业务上允许“同时编辑某一数据”,则以最后提交的为准
否则在收到请求时返回 xxx正在编辑
谢谢斑竹的指教!能详细点吗?合作方要求只能在界面模块进行限制同时编辑某一数据。
在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳
此时再有人想编辑,状态1就拒绝
用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间
当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0
在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳
此时再有人想编辑,状态1就拒绝
用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间
当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0
谢谢您的回复,我有些疑惑在界面模块可以这样做吗?我曾讨教过一位做了多年php的朋友,他告诉我这没法整。
之前我也想过设置标识,因为无法操作数据库,所以放弃了。
编辑的时候不需要权限么?A发的B也可以编辑么?
编辑的时候不需要权限么?A发的B也可以编辑么?
谢谢您的到来!
编辑的时候需要权限,但可以在线多个有权限的用户进行编辑某一条数据。
不允许同时编辑同一条记录,是业务层面的需求
业务需求的实现,应在 中间接口 中完成。如有特殊需求,也可在 界面模块 完成
你的这个需求还是应在 中间接口 中完成的
不允许同时编辑同一条记录,是业务层面的需求
业务需求的实现,应在 中间接口 中完成。如有特殊需求,也可在 界面模块 完成
你的这个需求还是应在 中间接口 中完成的
感谢版主的再次指教!谢谢“xuzuning”版主!
我描述的还不够细致,重新描述下业务逻辑:
界面层的功能包括:数据显示,数据编辑请求,操作用户的管理等,且界面层有操作用户的数据库。
中间接口层:处理界面层的请求,无视操作用户,不管哪个操作用户的操作请求,中间接口层都视为合法。
我感觉版主您的意思是在中间接口层处理,然后不管谁发过来的请求,请求过来,标识锁定,返回结果后再标识解锁?
我之前也是这样认为的,因为第一次接触php, 对方是老手,所以不敢确定。
对方非得要我在界面层来处理该业务,说用ajax就可以, 但我觉得我无法去设标识,所以困惑,才有此问。
再次感谢版主的指教!
放在 中间层 比较合适
因为一般的说,中间层就是通常说的 API
加一个过滤条件比较简单
当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。
所以要单独设置缓存机制,未处理完的就不再向中间层发请求
用一个共享内存或数据库或文件的队列就可以了
放在 中间层 比较合适
因为一般的说,中间层就是通常说的 API
加一个过滤条件比较简单
当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。
所以要单独设置缓存机制,未处理完的就不再向中间层发请求
用一个共享内存或数据库或文件的队列就可以了
太感谢了,清晰很多了,谢谢!!!
结贴,呵呵。

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Chinese version
Chinese version, very easy to use

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.
