Bonjour a tous,
Je travaille sur une appli client/serveur (Perl / Oracle) et mon code est tres lent et je viens de me rendre compte de quelque chose...
Tout d'abord, j'ai essayé d'afficher ma page sans aucune requete sur la base de données. L'affichage est tres rapide.
Lorsque je remet toutes les requetes, l'affichage devient super long. Mais vous allez me dire q cest normal, ce que je comprend tout a fait.
Par contre, j'ai étudié comment été faites les requetes. A chaque requete, on fait un appel a la fonction bd_select :
Cette fonction bd_select est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $req = fich->bd_select($login, $pass, "select...");
Cela signifie que pour la moindre requete, on ouvre la connexion a la base Oracle, on fait la requete et on referme la connexion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 sub bd_select{ my $login = $_[1]; my $pass = $_[2]; $dbh = DBI->connect(...) ; my $sql = $_[3]; if ($dbh) { $sth = $dbh->prepare($sql) or die "Can't prepare statement : ", DBI::errstr; $rc = $sth->execute or die "Can't execute statement : ", DBI::errstr; my $array = $sth->fetchall_arrayref; $sth->finish; $dbh->disconnect(); return $array; } else { return ("error"); } }
Est ce qu'il ne serait pas mieux d'ouvrir la connexion en debut de script, faire les differentes requetes dont on a besoin, et refermer la connexion en fin de script.
Je procede comme ca avec php/Mysql, je ne sais pas si c'est faisable dans le cas de Perl/Oracle, mais je pense que si ca marchait, on gagnerait un temps considerable puisqu'il me semble que la connexion a une base Oracle est une opération couteuse en temps.
Qu'en pensez vous?
Merci a tous
Partager