Alors je vais essayer de vous exposer mon probleme de facon claire :
J'ai un serveur fax, c'est a dire qu'on ne s'embete plus a envoyer des faxs a l a main mais en html via le serveur.
Vu que celui-ci a tendence a planter de temps en temps, nous perdons tout les faxs ayant ete envoyés entre le plantage et la reparation.
J'espere etre claire
C'est pour cela que mon directeur m'a demandé de faire quelque chose, j'ai donc creer une fonction:
function testServeur($numf)
{
if($numf==0)
{
//***arret et redemarrage du serveur fax*******
$command="sudo service hylafax stop";
$res=syscall($command); //arret du fax
$command2="sudo service hylafax stop";
$res=syscall($command2); //2eme arret du fax au cas où :)
$command3="sudo service hylafax start";
$res=syscall($command3); //lancement du fax
//*****MaJ de la table envois(id_fax=-1)***
$requete="UPDATE envois SET id_fax=-1 WHERE id_fax=0 AND date(dateenvoi)=date(NOW())";
mysql_query($requete) or die(mysql_error());
//****renvoie du fax*******
$prems="";
$sql_req="SELECT destinataire,personne,tel,fax,contrat,ta,ref_client,codeclient,codeoperation,num_fax FROM envois WHERE date(dateenvoi)=date(NOW()) AND id_fax=-1 ORDER BY dateenvoi";
$sql_res = mysql_query($sql_req) or die(mysql_error());
while($bdd = mysql_fetch_array($sql_res))
{
if($prems=""){ $prems=$bdd[9]; }
$opt= array($bdd[4],$bdd[0],$bdd[1],$bdd[2],$bdd[6],$bdd[3],$bdd[5],$bdd[8],$bdd[7],$bdd[9]);
$fic=completeFax($opt);
envoyerFax($opt,$rep.$fic);
}
$der=$bdd[9];
//******insertion dans la table problemes*****
$sql_req="INSERT INTO problemes VALUES (NOW(),'".$prems."','".$der."')";
mysql_query($sql_req) or die(mysql_error());
}
}
Et voila ma fonction envoyerFaxfunction envoyerFax($opt,$cheminFichierComplete)
{
$res=syscall('/usr/local/bin/html2ps -e iso-8859-1 -S "@page{width:21.0cm;margin-top:0.5cm;margin-bottom:0.5cm;margin-left:1.0cm;margin-right:1.0cm;}body{font-family:Times}" '.$cheminFichierComplete.' |sendfax -n -N -d '.$opt[5]);
//On récupère l'id du fax dans $res[0][3]
$res=formaterResultatCommande($res);
//Construction de la requête
$sql_req='INSERT INTO envois (destinataire,personne,tel,fax,contrat,ta,dateenvoi,id_fax,ref_client,codeclient,codeoperation,num_fax)';
$sql_req.=' VALUES ("'.$opt[1].'","'.$opt[2].'","'.$opt[3].'","';
$sql_req.=$opt[5].'","'.$opt[0].'","';
$sql_req.=$_SESSION['identifiant'].'",NOW(),"'.$res[0][3].'","'.$opt[4].'","'.$opt[7].'","'.$opt[6].'","'.$opt[9].'")';
echo '<BR>'.$sql_req;
//Requête SQL d'ajout du fax dans la BDD
$dbid=connecterBDD();
$sql_res = mysql_query($sql_req,$dbid) or die(mysql_error());
echo'test1';
testServeur($res[0][3]);
echo'test3';
deconnecterBDD($dbid);
}
Alors, reprenons la premier fonction : - le redemarrage du serveur fonctionne
- l'update fonctionne, mes id_fax prennent bien la valeur -1 (cela permet de voir quels fax ont été traité)
- ensuite c'est la que ca plante, j'ai le message d'erreur : "DUPLICATE KEYS
Je suis ouvert a toute aide cependant je ne pourrais pas tester vos idées avant demain soir car le serveur tourne la journée et je ne peut pas leur couper le fax
Merci d'avance