代码之家  ›  专栏  ›  技术社区  ›  Lydon Ch

当用户刷新浏览器时停止多个数据库访问

  •  0
  • Lydon Ch  · 技术社区  · 15 年前

    假设我们有一个需要20秒才能运行的数据库查询(用户通过在浏览器中单击HTML页面上的按钮来运行它)。 用户变得不耐烦,只有10秒钟后,他才刷新浏览器,只运行一个新的查询。

    如何停止第一个正在运行的数据库查询(或阻止第二个查询运行)?

    谢谢

    3 回复  |  直到 15 年前
        1
  •  1
  •   Will Hartung    15 年前
    • 如果使用的是Ajax,请禁用 启动查询直到 查询完成后。

    • 当用户发出请求时,设置 在用户会话中标记,然后 在单独的线程上启动查询。 如果他们试图再次提交,请检查 旗子,只需忽略 请求。查询完成后, 重置标志。当查询是 运行时,浏览器可以轮询 服务器正在等待结果。

        2
  •  3
  •   HLGEM    15 年前

    第一步是优化查询,20秒对于大多数查询来说太长了。用户一般不会容忍这种糟糕的性能。

        3
  •  1
  •   Winston Chen    15 年前

    我不是专家,但您可以存储他上次在会话中提交查询的时间。如果同一个用户以20秒的时间提交另一个查询,则忽略它。

    但这并不是一种暴力的方式。