【问题标题】:laravel cancel database querylaravel 取消数据库查询
【发布时间】:2017-08-30 21:25:20
【问题描述】:

我在 laravel 中有一个站点,其中一个页面进行多个数据库查询(选择语句可能需要一些时间才能运行)。

有没有办法检测用户是否:

  • 刷新页面
  • 更改查询参数
  • 关闭页面

因此意味着不需要查询的结果,因此取消它或终止进程?

注意数据库是 mysql,所以我可以从 mysql 工作台轻松调用 kill {PID} 手动结束类似的查询。

谢谢!

【问题讨论】:

  • 可以做到,但对我来说似乎有点矫枉过正。多少查询,什么类型的查询等等会有所帮助。也许在开始杀死进程之前先看看逻辑。

标签: php mysql laravel


【解决方案1】:

您可以使用 Javascript 检测用户是否离开或重新加载页面,捕获 ONUNLOAD 事件(documentation hereSO related question here)。
要检查查询参数是否更改,您应该指定用户是在表单中手动输入它们还是您获取它们的任何其他方式,任何不同的方法都有不同的答案。

【讨论】:

    【解决方案2】:

    是的,这一切都可以通过一些 JavaScript 轻松检测到;当用户试图离开或关闭页面时,会触发一个“onunload”事件,以便回答 1 和 3。更改表单中的字段也很容易检测到。

    难题将取消请求与原始查询匹配;不知何故,您必须知道该查询的 PID,并且由于 MySQL 函数通常在完成之前不会返回,因此您不能要求诸如 PID 之类的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-04
      • 2021-05-09
      • 2023-01-18
      • 2021-08-20
      • 1970-01-01
      • 2017-01-12
      • 2019-05-12
      相关资源
      最近更新 更多