我需要在一个相当大的表上执行一些查询,如何检查查询是否已完成?
主要问题是查询最多需要10分钟,我想告诉用户,因此webbrowser,它仍在运行,所以只需等待$sth->fetch*
完成就不是一个选项它会"暂停"脚本,直到有数据被提取。
我检查了文档,但似乎没有$dbh->has_finished()
或$dbh->has_data()
这样的功能。
答案 0 :(得分:3)
事件循环应该可以进行异步数据库查询。我建议你看一下AnyEvent::DBI。诀窍是使用条件变量。查询以异步方式执行。当查询完成时,它调用一个在条件变量上广播的回调子。您可以使用$cv->ready
来检查查询是否已完成。