Vérifier si une requête est terminée

J'ai besoin d'effectuer des requêtes sur une table plutôt grande, comment puis-je vérifier si la requête est terminée?

Le problème principal est que les requêtes peuvent prendre jusqu'à 10 minutes et que je veux dire à l'user, et donc au webbrowser, qu'il est toujours en cours d'exécution, donc attendre simplement $sth->fetch* pour finir n'est pas une option comme il le fera "suspendre" le script jusqu'à ce qu'il y ait des données à extraire.

J'ai vérifié la documentation mais il ne semble y avoir aucune fonction comme $dbh->has_finished() ou $dbh->has_data() .

Les requêtes de bases de données asynchronouss devraient être possibles avec une boucle d'événement. Je suggère que vous jetez un oeil à AnyEvent :: DBI . L'astuce consiste à utiliser une variable de condition. La requête est exécutée de manière asynchronous. Lorsque la requête est terminée, il appelle un sous-callback qui diffuse sur la variable de condition. Vous pouvez utiliser $cv->ready pour vérifier si la requête est terminée.