首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许同时查看页面

不允许同时查看页面
EN

Stack Overflow用户
提问于 2018-02-18 07:09:04
回答 2查看 40关注 0票数 1

我有一个自送中心的应用程序,几个运营商(用户)可以处理他们共同的订单列表。但我需要限制他们同时处理相同的订单。

也就是说,当某个用户查看订单,而第二用户也进入该顺序时,不能为第二个用户显示处理按钮。

我怎样才能在Laravel 5.5中做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-18 08:46:35

虽然有许多可能的方法来处理类似这样的问题,但为该顺序添加一个缓存条目以指示当前正在处理的情况可能会奏效。

有一些警告,但下面的逻辑可能有效:

  1. 当用户加载订单时,为这个顺序在缓存中放置一个条目,也许是缓存键"order_in_progress:1234“
  2. 根据处理订单所需的时间设置合理的缓存密钥,但可能需要5分钟(如果没有完成,就应该返回到能够处理的状态)。
  3. 缓存值应该是试图处理订单的用户,这样页面刷新仍然允许同一个用户再次加载页面并对其进行编辑。
  4. 使用缓存键和存活值的时间,您甚至可以向用户显示在其他人处理订单之前还有多少时间来处理订单(这是额外的)。
  5. 如果多个用户同时加载未处理订单页,则他们可能能够单击链接,这可能导致再次加载页面,但关键是检查缓存中是否存在此订单编号的缓存项,指示该订单号已在处理中。如果存在密钥,则它仍然是可见的,但在第一个用户成功或超时之前不能采取任何操作。
  6. 一旦订单被处理,作为清理的一部分,您可以删除那个缓存键;或者,您可以让它过期,因为处理后的订单无论如何都不会出现在屏幕上,因为它们不相关。

这可能满足您的需求,而且可能更多。老实说,考虑到你的要求,听起来可能有更多的事情你没有考虑过,但你可以自由地要求进一步的澄清。

票数 0
EN

Stack Overflow用户

发布于 2018-02-18 08:50:55

你的问题有点像种族条件

一个不错的解决方法是按照正在查看的顺序设置一个锁标志,并设置释放它的超时,但是由于这个(主要的)问题,您必须重新考虑应用程序架构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48849290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档