Dans mon script php qui se connecte à mysql, je dois interroger 2 bases de données dans le même script pour obtenir des informations différentes. Plus précisément Faxarchives dans une base de données et Faxusers dans l'autre.mysql php: la commutation entre les bases de données mysql est lente
Dans mon code, j'interroge les utilisateurs de fax, puis pour chaque utilisateur, j'interroge Faxarchives pour obtenir l'historique de l'utilisateur.
je pourrais faire quelque chose comme:
function getUserarchive($userid) {
$out= "";
$dbname = 'Faxarchive';
$db = mysql_select_db($dbname);
$sql = "select sent, received from faxarchivetable where userid = '" . $userid . "'";
if ($rs = mysql_query($sql) {
while ($row = mysql_fetch_array($rs)) {
$out = $row['sent'] . " " . $row['received'];
}//end while
}//end if query
return ($out);
}//end function
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'Faxusers';
$db = mysql_select_db($dbname);
$sql="select distinct userid from faxuserstable";
if ($rs = mysql_query($sql) {
while ($row = mysql_fetch_array($rs)) {
$out = $row['userid'] . ":" . getuserarchive($row['userid']);
}//end while
}//end if query
Je devine que la commutation entre les bases de données pour chaque utilisateur est à l'origine de la lenteur. De toute façon comment je peux améliorer la vitesse du traitement?
merci d'avance.
oops .. a oublié d'inclure la clause where dans la fonction getuserarchive(). – phill
Je ne savais pas que mysql pouvait faire des sous-sélections .. Je vais essayer ça .. merci! – phill
Je regarde la requête: sélectionnez envoyé, reçu de faxarchivetable où userid dans (sélectionnez userid distinct de faxuserstable) .. chacune des tables sont dans des bases de données différentes. N'aurais-je pas besoin de faire un mysql_select_db avant d'exécuter chaque requête? – phill