effectivement cela ne vient pas du nombre de connexions. Le problème comme tu me la indiqué, viendrait du fait que le fils ferme la connexion en se terminant. Comme tu me l'as dit, j'ai utilisé connect_cached à la place de connect et j'ai été obligé de le mettre dans la boucle infine. Cela ne marche toujours pas : j'ai des comprtement différents sur plusieurs exécutions... dépendant d'où est rendu le père quand un fils se termine!
j'ai essayé sans succès prepare_cached à la place de prepare... je désespère là.
Je peux comprendre que le fils termine la connexion... mais comment la récupérer surtout que l'on ne sait pas où se trouve le père quand le fils se termine...
#!/usr/bin/perl -w
use DBI;
$u = 0;
####################################################################################
# BOUCLE 1 (BOUCLE "INFINIE")
####################################################################################
while (1) {
####################################################################################
# REQUETE PRINCIPALE : SELECTION DE LA TABLE UTILISATEUR AVEC TOUS CES CHAMPS
####################################################################################
$query = "select * from utilisateur";
$sth = $dbh->prepare($query);
$res = $sth->execute;# (c'est la ligne 20)
$child = fork;
if ( $child == 0 ) {
print "Dans le fils n° ".$u."\n";
exit;
}
print "Dans le père\n";
$u = $u + 1;
}# while(1) FIN BOUCLE 1 (BOUCLE "INFINIE")
$sth->finish;
$dbh->disconnect;
voici la trace :
[root@localhost perl]# ./fork.pl
Name "main::res" used only once: possible typo at ./fork.pl line 20.
Dans le fils n° 0
Dans le père
Dans le fils n° 1
Dans le père
Dans le fils n° 2
Dans le père
Dans le fils n° 3
Dans le père
Dans le fils n° 4
Dans le père
Dans le fils n° 5
Dans le père
Dans le fils n° 6
Dans le père
Dans le fils n° 7
Dans le père
Dans le fils n° 9
Dans le père
Dans le fils n° 10
Dans le père
Dans le fils n° 8
DBD::mysql::st execute failed: MySQL server has gone away at ./fork.pl line 20.
DBD::mysql::st execute failed: MySQL server has gone away at ./fork.pl line 20.
plusieurs exécution ne donnent pas les même trace...mais cela fini par le même message d'erreur.
[^] # Re: dans MySQL : show variables;
Posté par arn100 . En réponse au message fork et mysql. Évalué à 1.
j'ai essayé sans succès prepare_cached à la place de prepare... je désespère là.
Je peux comprendre que le fils termine la connexion... mais comment la récupérer surtout que l'on ne sait pas où se trouve le père quand le fils se termine...
#!/usr/bin/perl -w
use DBI;
$u = 0;
####################################################################################
# BOUCLE 1 (BOUCLE "INFINIE")
####################################################################################
while (1) {
$dbh =
DBI->connect_cached(
"DBI:mysql:database=archive;host=localhost.localdomain",
"root", "mysqlpwd", { 'RaiseError' => 1 } );
####################################################################################
# REQUETE PRINCIPALE : SELECTION DE LA TABLE UTILISATEUR AVEC TOUS CES CHAMPS
####################################################################################
$query = "select * from utilisateur";
$sth = $dbh->prepare($query);
$res = $sth->execute;# (c'est la ligne 20)
$child = fork;
if ( $child == 0 ) {
print "Dans le fils n° ".$u."\n";
exit;
}
print "Dans le père\n";
$u = $u + 1;
}# while(1) FIN BOUCLE 1 (BOUCLE "INFINIE")
$sth->finish;
$dbh->disconnect;
voici la trace :
plusieurs exécution ne donnent pas les même trace...mais cela fini par le même message d'erreur.