Classe database + connexion multiple + principe mal compris
Bonjour,
Pour simplifier mon code, j'ai créé une classe pour gérer mes connexions avec une base de donnée MySQL. Dans le constructeur de cette classe, je me connecte à la base de données .
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class MySQLDB
{
//...
/* Class constructor */
function MySQLDB(){
/* Make connection to database */
$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
//...
}
}
};
/* Create database connection */
$database = new MySQLDB; |
Tout fonctionne très bien! Mais je me demande... Lorsque j'ai besoin de récupérer des informations de ma base de données, j'inclus mon fichier db.php en utilisant include_once. Donc si je comprends bien comment php s'y prend... lorsqu'il va inclure le fichier il va me créer un objet database qui va se connecter à la base de données. Comme j'utilise include_once et non pas include, il n'incluera qu'une seule fois ce fichier ... Oui mais une seule fois pour tous les utilisateurs ou juste pour l'utilisateur en cours? Qu'entend-on par utilisateur en cours? L'utilisateur de le session courante? Que se passe-t-il si j'ai 1500 utilisateurs qui demande une page contenant cette include_once(db.php)? Mon script va essayer de créer 1500 connexions à ma base de données? Cela ne fonctionnera pas...
Enfin y-a-t-il possibilité d'avoir un destructeur dans des classes php? Quand est-ce que ma connexion à la base de données va être fermée, je n'appelle jamais mysql_close?
Je pense au final que l'objet $database est le même pour tous les utilisateurs... C'est une sorte de singleton (même s'il n'est pas programmé comme tel!). Quelqu'un pourrait-il m'expliquer comment cela fonctionne svp ?
Le mieux serait quand même un multiton avec un destructeur.. mais je ne vois pas bien quand déclencher ce destructeur! Très flou tout ça :)
Cordialement,
Rodrigue