Optimisation de connection a une base de donn¨¦e SQL

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 31 mai 2005 à 11:47
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 31 mai 2005 à 15:18
Voil¨¤ en fait j aimerais savoir comment optimiser les connection a une bas de donn¨¦es SQL. J aimerais savoir ds quel cas on doit se reconnecter a une bdd SQL
Ceci dans le but d optimiser ce code:

//conexion a la bdd sql
$link
= mysql_connect
( "localhost"
,"root"
, ""
)

or die
("Impossible de se connecter : "
. mysql_error
());

//selection de la base
$db_selected
= mysql_select_db
('cdr'
, $link
);

if
(!$db_selected
)
{
die
('Impossible d\'utiliser la base : '
. mysql_error
());

}
$table
= "moisencours"
;
$query
= "SELECT * FROM $table WHERE type= 'National'"
;

$result
= mysql_query
($query
)
or die
( "Echec de la requ§Üte3"
);

while
($row
= mysql_fetch_assoc
($result
)){
$type
= $row
[ "type"
];
$tempo
= $row
["temps"
];
$nbappel
= $row
[ "nbappel"
];
mysql_close
($link
);
//ferme connexion a la bdd
$tempo
= $tempo
+ $tempsnational
;
$nbappel
= $nbappel
+ $appelnational
;

//conexion a la bdd sql
$link
= mysql_connect
( "localhost"
,"root"
, ""
)

or die
("Impossible de se connecter : "
. mysql_error
());

//selection de la base
$db_selected
= mysql_select_db
('cdr'
, $link
);

if
(!$db_selected
)
{
die
('Impossible d\'utiliser la base : '
. mysql_error
());

}
$table
= "moisencours"
;
$query
= "DELETE FROM $table WHERE type= 'National'"
;
//on la supprime pour la mettre a jour
$result
= mysql_query
($query
)
or die
( "Echec de la requete3"
);
mysql_close
($link
);
//ferme connexion a la bdd

//conexion a la bdd sql
$link
= mysql_connect
("localhost"
,"root"
, ""
)

or die
("Impossible de se connecter : "
. mysql_error
());

//selection de la base
$db_selected
= mysql_select_db
( 'cdr'
, $link
);

if
(!$db_selected
)
{
die
('Impossible d\'utiliser la base : '
. mysql_error
());

}
$table
= "moisencours"
;
$query
= "INSERT INTO $table
VALUES('$type','$tempo','$nbappel')"
;
//on met a jour
mysql_query
($query
)
or die
("Echec de la requete2"
);

break;

}//fin while assoc


---------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour b¨ºte que le rester toute sa vie

1 réponse

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 mai 2005 à 15:18
Salut,



je te file le code optimisé avant les explications.



<?php

$link = mysql_connect( 'localhost' ,'root','') or die('Impossible de se connecter : '. mysql_error());

if (!mysql_select_db('cdr'))


{
die ('Impossible d\'utiliser la base : ' . mysql_error());
}

$result = mysql_query("SELECT type,temps,nbappel FROM moisencours WHERE type= 'National'") or die( 'Echec de la requète' );

mysql_query( "DELETE FROM $table WHERE type = 'National'") or die('Echec de la requete3');


$i= 0;

$requete_insert = 'INSERT INTO moisencours VALUES ';



while ($row = mysql_fetch_row($result))

{
$type= $row[ 0 ];
$tempo = $row[1];
$nbappel= $row[ 2 ];
$mysql_close($link); //ferme connexion a la bdd

$tempo = $tempo + $tempsnational;
$nbappel= $nbappel + $appelnational;

if($i===0)

{

$requete_insert.='(''.$type .'','.' $tempo.'','.'$nbappel.'')';

$i =1;

}

else

{


$requete_insert.= ',(''.$type .'','.' $tempo.'','.'$nbappel.'')';

}

//break ????


}


mysql_query($requete_insert) or die('Echec de la requete2');

mysql_close();

?>



par contre dans ta boucle tu fais un break, ça veut dire que tu ne
traites qu'un seul enregistrement, ta boucle ne sert donc à rien (j'ai
donc commenté ton break, tu le remettras ensuite si tu veux ou non)



Bref si tu n'as qu'un seul enregistrement de parcouru, ma solution
convient. A partir d'un certain nombre d'enregistrements, mieux vaut
ouvrir une connexion que tu fermes en haut (pour la première requête)
et une autre pour effectuer la requête insert après la boucle.



Bref c'est déjà beaucoup plus optimisé que tout à l'heure.



a +


<hr size ="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Rejoignez-nous