【问题标题】:Check if a query has finished检查查询是否已完成
【发布时间】:2014-07-22 14:59:32
【问题描述】:

我需要对一个相当大的表执行一些查询,我如何检查查询是否完成?

主要问题是查询可能需要长达 10 分钟,我想告诉用户,因此网络浏览器,它仍在运行,所以只是等待 $sth->fetch* 完成不是一个选项,因为它会“暂停”脚本,直到有数据要获取。

我检查了文档,但似乎没有像 $dbh->has_finished()$dbh->has_data() 这样的功能。

【问题讨论】:

  • 据我所知,fetch 正在阻塞操作,在它完成之前你不能做任何事情。
  • 是的,这就是问题所在,我正在寻找一个功能,我可以问“它完成了吗?”一直以来,我都可以向浏览器和用户发送“仍在运行,请稍候”。
  • 你需要工作队列。

标签: sql sql-server perl dbi


【解决方案1】:

应该可以使用事件循环进行异步数据库查询。我建议你看看AnyEvent::DBI。诀窍是使用条件变量。查询是异步执行的。当查询完成时,它会调用一个在条件变量上广播的回调子。您可以使用$cv->ready 来检查查询是否完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2017-11-13
    • 2014-09-11
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多