17-04-2010, 11:18 PM
Alors déjà tu te trompes sur pas mal de chose:
D'ailleurs dans la plupart des applications web cette connexion est recréé à chaque début de page et fermé à la fin de cette dernière. Pour empêcher çà il faut demander une connexion persistante mais tous les hébergements ne le permette pas.
Donc si tu unset() chaque référence quand tu n'en a plus besoin tu détruit l'objet.
Peut être aussi est il possible de détruire directement en appelant le destructeur.
Détruire les objets avant la fin peut être souhaitable si ils s'avèrent que ces derniers sont volumineux et consomme beaucoup en mémoire vive.
Un autre cas ou il faut nécessairement détruire les objets créé c'est la création d'un serveur socket qui tourne à l'infinie. Il faut alors faire très attention sur ce point pour éviter une montée en charge au fur et à mesure du temps.
Citation :Mais dans le cas d'une application web, notre code php est sur le serveur, en utilisant le singleton je force tous mes utilisateurs à utiliser la même instanciation de la connexion, ce qui nous fait qu'un seul pont vers la bdd et donc un gain de performances, j'ai bien compris?Non pas du tout, le singleton permet juste de forcer à réutiliser la même instance de classe au cours de l'exécution d'une page. Donc le singleton ne te permet pas de permettre à tes utilisateurs d'utiliser la même connexion à la bdd.
D'ailleurs dans la plupart des applications web cette connexion est recréé à chaque début de page et fermé à la fin de cette dernière. Pour empêcher çà il faut demander une connexion persistante mais tous les hébergements ne le permette pas.
Citation :Mais n'y a t'il pas un risque d'embouteillage sur ce pont si on a beaucoup d'utilisateur?Justement si tu utilise les connexions persistante si 2 scripts s'exécutent en même temps elles ouvriront une seconde connexion persistante, si mes souvenir sont bon, car il n'est pas possible avec un serveur xamp d'utiliser la même connexion sur 2 page s'exécutant au même moment (ceci étant j'ai pas essayé, pour tester on pourrait transmettre la ressource par session/fichier)
Citation :Quand j'instancie un objet provenant de ma bdd, par exemple je crée une instance de ma classe user en utilisant les données d'un row de ma table user dans ma bdd. Je fais mon select dans ma bdd, je récupère mes données, je fais des modifs, je les envois à ma bdd avec mon update. Quand j'arrête d'utiliser on objet, est il mieux que je le détruise? Car je me dis qu'à force si je les laisse, tous les objets que je vais créer au fil du temps vont faire saturer mon serveur. Comme j'ai ma bdd je n'ai pas besoin de les garder, peut être un temps pour accélérer l'accès aux données... Des idées pour gérer?Comme je l'ai dit les objets créés au court d'un script sont détruit à la fin. Ils sont aussi détruit si il n'y a plus de référence qui pointe vers eux.
Donc si tu unset() chaque référence quand tu n'en a plus besoin tu détruit l'objet.
Peut être aussi est il possible de détruire directement en appelant le destructeur.
Détruire les objets avant la fin peut être souhaitable si ils s'avèrent que ces derniers sont volumineux et consomme beaucoup en mémoire vive.
Un autre cas ou il faut nécessairement détruire les objets créé c'est la création d'un serveur socket qui tourne à l'infinie. Il faut alors faire très attention sur ce point pour éviter une montée en charge au fur et à mesure du temps.