JeuWeb - Crée ton jeu par navigateur
deconnexion propre d'une bdd - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : deconnexion propre d'une bdd (/showthread.php?tid=599)



deconnexion propre d'une bdd - gtsoul - 03-01-2007

Pour chaque utilisateur qui se connecte, je crée une session $_SESSION['perso'] = $id_du_perso
et je le déconnecte en faisant un session_destroy();

je fais un mysql_connect() et un mysql_close() au début et à la fin de chaque page.

Par acquis de conscience, j'utilise mysql administrator (la commande 'ps' marche tout aussi bien) et j'ai vu que si les connections étaient mortes, les processus étaient toujours en vie et il s'en rajoutait un par nouvelle connexion sans jamais mourir (même à la déconnexion ou à la fermeture du navigateur et reste en "sleep").

Je ne sais absolument pas comment php gère un pool de connection, et j'aimerais faire ca proprement. J'utilise la classe de connection présente dans un tuto du site (c'est moi qui l'ai mise), mais cela ne fait que reprendre mysql_connect/mysql_select_db/mysql_close.
Est-ce que c'est propre ?
Est-ce que les processus restant vont être automatiquement nettoyés ?
Sinon comment faire ?
Commet gérer la déconnexion d'un joueur plus proprement ?

Voilà, je m'adresse surtout aux personnes avec un site en activité.


RE: deconnexion propre d'une bdd - NicoMSEvent - 03-01-2007

J'ai abandonné l'idée des connections persistantes avec mysql.
Par contre, les connections persistantes avec apache apportent beaucoup!
Pour une page avec 50 vignette, il n'y aura plus qu'une connection au lieu de 50. Par expérience, une connection persistance dure a peu près 15 secondes. Elle sera automatiquement fermée après.
Par contre, pour mysql, une connection par page. (avec les connections persistantes de mysql, il en ouvrait une nouvelle par page sans les refermer -> saturation rapide).

Voila pour mon expérience personnelle. (ps : apache et PHP prennent beaucoup plus de ressource que mysql -> ne pas avoir peur de faire trop d'ouverture/fermeture de connection mysql)


RE: deconnexion propre d'une bdd - gtsoul - 03-01-2007

concretement tu as choisi quelle méthode ?
tu as un exemple ?


RE: deconnexion propre d'une bdd - NicoMSEvent - 03-01-2007

concretement, je n'utilise pas de mysql_pconnect mais plutot mysql_connect (voir tutorial pour se connecter a mysql via php4)

Dans le fichier httpd.conf (configuration apache) j'ai mis

KeepAlive On (permet les connections persistantes)

et

KeepAliveTimeout 15 (les 15 secondes sont pas défaut, je n'ai pas modifié ce parametre)

C'est tout... simple non? ^^

je ne ferme pas la connection mysql (elle est automatiquement fermée dès que la page est transmise dans son intégralité)


RE: deconnexion propre d'une bdd - Plume - 03-01-2007

J'ai eu ce problème sur un projet. J'avais réussi à le régler, mais je n'en ai pas gardé note. En effet, je n'ai plus rencontré ce 'soucis' après donc j'ai fini par oublier. Si jamais j'arrive à retrouer je ferais voir, mais en tout cas la méthode de Nico ne me rappelle rien Big Grin