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 : Sélectionner tout - Visualiser dans une fenêtre à part mysql_connect()
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...
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 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;
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
Partager