:多用户同时访问时的问题?
请各位大牛不吝指教,先谢过去了!
情况描述如下:
系统结构: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
加一个过滤条件比较简单
当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。
所以要单独设置缓存机制,未处理完的就不再向中间层发请求
用一个共享内存或数据库或文件的队列就可以了
太感谢了,清晰很多了,谢谢!!!
结贴,呵呵。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在iOS17中,Apple可以更好地控制應用程式可以看到的照片內容。繼續閱讀,了解如何按應用程式管理應用程式存取權限。在iOS中,Apple的應用程式內照片選取器可讓您與應用程式分享特定照片,而照片圖庫的其餘部分則保持私密。應用程式必須要求存取您的整個照片圖庫,您可以選擇授予應用程式以下存取權限:受限存取–應用程式只能看到您可以選擇的圖像,您可以隨時在應用程式中或透過前往「設定」> ;“隱私和安全性”>“照片”來查看所選圖像。完全存取權限–App可以查看照片

一個JsonNode是Jackson的JSON樹模型,它可以將JSON讀取為JsonNode實例,並將JsonNode寫入JSON。透過建立ObjectMapper實例並呼叫readValue()方法,我們可以使用Jackson將JSON讀取為JsonNode。我們可以使用JsonNode類別的get()方法來存取欄位、陣列或巢狀物件。我們可以使用asText()方法傳回有效的字串表示,並使用JsonNode類別的asInt()方法將節點的值轉換為Javaint。在下面的範例中,我們可以訪問Json

我們可以使用Mutagen和Python中的eyeD3模組存取音訊檔案的元資料。對於視訊元數據,我們可以使用影片和Python中的OpenCV庫。元資料是提供有關其他資料(例如音訊和視訊資料)的資訊的資料。音訊和視訊檔案的元資料包括檔案格式、檔案解析度、檔案大小、持續時間、位元率等。透過存取這些元數據,我們可以更有效地管理媒體並分析元數據以獲得一些有用的信息。在本文中,我們將了解Python提供的一些用於存取音訊和視訊檔案元資料的庫或模組。存取音頻元資料一些用於存取音訊檔案元資料的庫是-使用誘變

如何解決Tomcat部署war包後無法成功存取的困擾,需要具體程式碼範例Tomcat作為一個廣泛使用的JavaWeb伺服器,允許開發人員將自己開發的網路應用程式打包為war檔進行部署。然而,有時我們可能會遇到部署war包後無法成功存取的問題,這可能是由於配置不正確或其他原因引起的。在本文中,我們將提供一些解決這個困擾的具體程式碼範例。一、檢查Tomcat服務

如何解決PHP開發中的外部資源存取和調用,需要具體程式碼範例在PHP開發中,我們經常會遇到需要存取和調用外部資源的情況,例如API介面、第三方庫或其他伺服器資源。在處理這些外部資源時,我們需要考慮如何進行安全的存取和調用,同時確保效能和可靠性。本文將介紹幾種常見的解決方案,並提供相應的程式碼範例。一、使用curl函式庫進行外部資源呼叫curl是一個非常強大的開源函式庫

在家庭或企業網路環境下,共用資料夾確實是一項極為實用的功能,它能讓您輕鬆地將資料夾分享給其他用戶,以便於檔案的傳輸與分享。 win10家庭版共用資料夾無法存取解決方法:解決方案一:檢查網路連線和使用者權限在嘗試使用Win10共用資料夾時,我們首先需要確認網路連線及使用者權限是否正常。若網路連線故障或使用者未獲得存取共用資料夾的權限,便可能導致無法存取的現象。 1.首先請確保網路連線順暢,以便電腦與共用資料夾所在的電腦在同一區域網路中,能夠正常進行通訊。 2、其次檢查使用者權限,確認目前使用者對於共享文件

win7修改檔案提示變更權限拒絕存取如何解決?有些系統檔案在進行修改的時候,常常會提示我們沒有權限去進行操作。我們可以去進行資料夾權限的功能關閉,或是取得管理員權限。需要修改這類文件的用戶,一起來看看接下來具體的教學分享。 win7修改檔案提示變更權限拒絕存取解決方法 1、先選取對應資料夾,點選上方工具,選取資料夾選項。 2、進入檢視選項卡。 3、取消勾選使用簡單檔案共用然後確定。 4、然後右鍵選擇對應資料夾,點選屬性。 5、進入安全性選項卡。 6、選擇圖示位置,點選進階。 7

iOS中無法唯一存取相機裝置。官方規範建議如下-建議該規範的用戶代理實現在開始透過麥克風或相機捕獲內容之前徵求用戶同意。這可能是滿足與用戶資料隱私相關的監管、法律和最佳實踐要求所必需的。此外,建議用戶代理實現在輸入設備啟用時向用戶提供指示,並使用戶可以終止此類捕獲。同樣,用戶代理建議提供用戶控制,例如允許用戶-如果存在多個設備,則選擇要使用的確切媒體捕獲設備相同。在視訊擷取模式下停用聲音擷取。
