Bonjour,
Tout d'abord le contexte :
Fedora core 4
Apache 2
Mysql 4.1.19
PHP 4
J'ai un site web, en PHP, qui lance dans un popen un script perl qui peut durer plusieurs jours. A priori, c'est seulement le script perl qui pose probleme, d'apres mes recherches sur google, mais je n'ai aucune solution pour y remedier.
Si le script se realise dans un temps "court" (<3 jours), en general ca passe. Sur des temps plus longs le probleme se presente. Le temps pour declencher l'erreur est variable (le script a deja tourné sur 6 jours sans s'arreter).
Le probleme :
Dans le script je fais des appels à une base de données MySQL :
Si la boucle est trop longue, le script s'arrete.
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 use DBI; $dbh = DBI->connect( "DBI:mysql:database=sequencage;host=localhost", "login", "password", {'RaiseError' => 1} ); while (bla bla) { #$nom est affecte dans cette boucle my $query="SELECT * FROM matable WHERE nom='$nom'"; my $sth=$dbh->prepare($query); my $res=$sth->execute; # LA LIGNE ou l'erreur est annoncee } #la suite du script
Dans les logs d'apache j'ai trouve l'erreur suivante :
DBD::mysql::st execute failed: MySQL server has gone away at script.pl line xxx
Je ne sais pas vraiment quoi faire dans ce cas la...
Pour moi deux solutions sont possibles, mais je ne sais pas comment les mettre en oeuvre :
- Corriger le probleme : ca n'a pas l'air si simple
- Trapper l'erreur et dans ce cas faire un disconnect / reconnect, mais je ne sais pas comment faire le trap (il ne faut pas que ce soit un die ou exit, pour permettre au script de continuer)
Vous aurez de votre cote peut-etre d'autres solutions a me proposer.
Je vous remercie par avance,
Sohnic
Partager