Bonsoir,

Afin de gérer les requêtes SQL sur mon site j'utilise PDO.

Afin que la page sache comment se connecter, j'ai un fichier unique avec la connexion à l'ensemble des bases de données, par exemple:

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
18
19
try {
    $strConnection = 'mysql:host=localhost;dbname=BaseDeDonnee1'; //Ligne 1
    $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
    $pdo_gamedata1 = new PDO($strConnection, 'IdentifiantMySql1', 'motdepasse', $arrExtraParam); //Ligne 3; Instancie la connexion
    $pdo_gamedata1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4
}
catch(PDOException $e) {
    echo 'Erreur lors de la connexion';
}
 
try {
    $strConnection = 'mysql:host=localhost;dbname=BaseDeDonnee2'; //Ligne 1
    $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
    $pdo_gamedata2 = new PDO($strConnection, 'IdentifiantMySql2', 'motdepasse', $arrExtraParam); //Ligne 3; Instancie la connexion
    $pdo_gamedata2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4
}
catch(PDOException $e) {
    echo 'Erreur lors de la connexion';
}
Ensuite sur la page je fais par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
include ('connexion.php');
try 
{
$req_rechercher_nombre_paiements = $pdo_gamedata1->prepare('SELECT COUNT(*) FROM Historique;');
$req_rechercher_nombre_paiements->execute();
$resultats_rechercher_nombre_paiements = $req_rechercher_nombre_paiements->fetchAll();
} 
catch (Exception $e) { }
 
echo "Il y a ".$resultats_rechercher_nombre_paiements[0][0]." résultats.";
?>
Cela fonctionne parfaitement, mais j'ai plusieurs questions:
- Est ce que la connexion pdo_gamedata1 reste ouverte après l'exécution de la requête ?
- Est ce qu'une visite sur la page PHP qui contient la requête va établir 1 ou 2 connexions SQL ? Les 2 se trouvent dans le fichier ajouté avec l'include, mais seule les informations contenues dans pdo_gamedata1 sont utilisés.

J'ai fais ce fichier unique afin de pouvoir facilement le modifier et que ça s'applique d'un coup sur l'ensemble des pages. Si mettre l'ensemble des informations dans un même fichier provoque l'ouverture de toutes les connexions dont les informations sont contenues dans le fichier même si je ne fais pas de requête SQL, c'est très problématique, par exemple si l'hébergeur limite les connexions à 50 en simultanée. En effet, si dans mon fichier ajouté avec l'include se trouvent les informations de connexion à 5 bases de données du site, il suffirait que 10 personnes se rendent sur une page PHP qui contient cet include afin d'utiliser la totalité des connexions autorisées.

Dans l'attente d'une réponse afin de discuter de ma gestion des connexions, je vous souhaite de passer une agréable soirée.