OVH Cloud OVH Cloud

[Accès alternatifs] les connexions

6 réponses
Avatar
Roumegou Eric
Bonjour,
un pb que je soumet à votre sagacité.

En C/S, quand on attaque une base (disons mysql), on a une connexion à
l'ouverture du projet (une fenetre login/password par ex) et on va
deconnecter à la fermeture du projet.
Connexion persistante donc et facile à gérer.

En mode Web, je procède de la mème façon et c'est plus problématique.
J'ai une cnx en init de projet, et un mysqldeconecte à la fermeture du
projet WB. Le souci est que l'on a du mal à gérer la sortie de
l'internaute, que la session reste active ensuite pendant longtemps et
que l'on monte vite à un nbre de connexions qui peut faire s'écrouler
le serveur mysql.

Donc la solution serait connexion/lecture ou ecriture/déconnexion à
chaque requete ?
Outre le fait que c'est un peu lourdingue, cela ,nbe va-t-il pas être
pénalisant en tps de réponse ?

Et peut-on monter cela le plus haut possible en prog (dans la classe)
afin de ne pas modifier toute la prog.

Un truc du genre
j'ai une méthode où je décris la cnx
A chaque SQLexec, si la cnx n'est pas active il la rétablit et
evenntuellt un param optionnel, decnxApres=Faux qui déconnecte une fois
la requete effectuée (tt seul).

Peut être les travaux sur php4wd ont dégrossi cette approche ?
Peut être avez vous des idées
Peut être est-ce déjà fait ?

Merci de vos réponses.


--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci dessus pour me contacter en privé)

6 réponses

Avatar
[Bernard Vessiot]
Roumegou Eric a formulé ce vendredi :
Bonjour,
un pb que je soumet à votre sagacité.

En C/S, quand on attaque une base (disons mysql), on a une connexion à
l'ouverture du projet (une fenetre login/password par ex) et on va
deconnecter à la fermeture du projet.
Connexion persistante donc et facile à gérer.

En mode Web, je procède de la mème façon et c'est plus problématique.
J'ai une cnx en init de projet, et un mysqldeconecte à la fermeture du projet
WB. Le souci est que l'on a du mal à gérer la sortie de l'internaute, que la
session reste active ensuite pendant longtemps et que l'on monte vite à un
nbre de connexions qui peut faire s'écrouler le serveur mysql.

Donc la solution serait connexion/lecture ou ecriture/déconnexion à chaque
requete ?
Outre le fait que c'est un peu lourdingue, cela ,nbe va-t-il pas être
pénalisant en tps de réponse ?



J'ai une trés grosse appli qui tourne sur une serveur Web+base Oracle.
Cette appli a été développée en Dot.Net et c'est en fait cette approche
qui a été utilisée, Dot.Net gérant un "Spool" de connexions...
Les performances sont bonnes et c'est en fait la 1° connexion qui est
relativement penalisante...


Et peut-on monter cela le plus haut possible en prog (dans la classe) afin de
ne pas modifier toute la prog.


oui, Les classes utilisées ouvrent et ferment les connexions en tant
que de besoins.

Un truc du genre
j'ai une méthode où je décris la cnx
A chaque SQLexec, si la cnx n'est pas active il la rétablit et evenntuellt un
param optionnel, decnxApresúux qui déconnecte une fois la requete effectuée
(tt seul).

Peut être les travaux sur php4wd ont dégrossi cette approche ?
Peut être avez vous des idées
Peut être est-ce déjà fait ?

Merci de vos réponses.



--
[Bernard Vessiot]
34980 Saint Gély du Fesc
Avatar
Roumegou Eric
[Bernard Vessiot] avait écrit le 21/04/2006 :
Roumegou Eric a formulé ce vendredi :
Bonjour,
un pb que je soumet à votre sagacité.

En C/S, quand on attaque une base (disons mysql), on a une connexion à
l'ouverture du projet (une fenetre login/password par ex) et on va
deconnecter à la fermeture du projet.
Connexion persistante donc et facile à gérer.

En mode Web, je procède de la mème façon et c'est plus problématique.
J'ai une cnx en init de projet, et un mysqldeconecte à la fermeture du
projet WB. Le souci est que l'on a du mal à gérer la sortie de
l'internaute, que la session reste active ensuite pendant longtemps et que
l'on monte vite à un nbre de connexions qui peut faire s'écrouler le
serveur mysql.

Donc la solution serait connexion/lecture ou ecriture/déconnexion à chaque
requete ?
Outre le fait que c'est un peu lourdingue, cela ,nbe va-t-il pas être
pénalisant en tps de réponse ?



J'ai une trés grosse appli qui tourne sur une serveur Web+base Oracle. Cette
appli a été développée en Dot.Net et c'est en fait cette approche qui a été
utilisée, Dot.Net gérant un "Spool" de connexions...



et ouaih, le "spool" de connexion (c'est pas pool, non ?)
On en a déja parlé ds le temps (surtout avec les tarifications
licences, où ç' était particulièrement prenant)
Avec mysql, on n'a pas ce pb économique de nbres, mais juste le pb de
montée en charge.
Mais difficile quand ce n'est pas géré par le serveur (comme c'est ton
cas avec dotnet)




Les performances sont bonnes et c'est en fait la 1° connexion qui est
relativement penalisante...


Et peut-on monter cela le plus haut possible en prog (dans la classe) afin
de ne pas modifier toute la prog.


oui, Les classes utilisées ouvrent et ferment les connexions en tant que de
besoins.

Un truc du genre
j'ai une méthode où je décris la cnx
A chaque SQLexec, si la cnx n'est pas active il la rétablit et evenntuellt
un param optionnel, decnxApresúux qui déconnecte une fois la requete
effectuée (tt seul).

Peut être les travaux sur php4wd ont dégrossi cette approche ?
Peut être avez vous des idées
Peut être est-ce déjà fait ?

Merci de vos réponses.





--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci dessus pour me contacter en privé)
Avatar
Emmanuel Lecoester
"Roumegou Eric" a écrit dans le message de
news:
Bonjour,
un pb que je soumet à votre sagacité.

En C/S, quand on attaque une base (disons mysql), on a une connexion à
l'ouverture du projet (une fenetre login/password par ex) et on va
deconnecter à la fermeture du projet.
Connexion persistante donc et facile à gérer.

En mode Web, je procède de la mème façon et c'est plus problématique.
J'ai une cnx en init de projet, et un mysqldeconecte à la fermeture du
projet WB. Le souci est que l'on a du mal à gérer la sortie de
l'internaute, que la session reste active ensuite pendant longtemps et
que l'on monte vite à un nbre de connexions qui peut faire s'écrouler
le serveur mysql.

Donc la solution serait connexion/lecture ou ecriture/déconnexion à
chaque requete ?
Outre le fait que c'est un peu lourdingue, cela ,nbe va-t-il pas être
pénalisant en tps de réponse ?

Et peut-on monter cela le plus haut possible en prog (dans la classe)
afin de ne pas modifier toute la prog.

Un truc du genre
j'ai une méthode où je décris la cnx
A chaque SQLexec, si la cnx n'est pas active il la rétablit et
evenntuellt un param optionnel, decnxApresúux qui déconnecte une fois
la requete effectuée (tt seul).

Peut être les travaux sur php4wd ont dégrossi cette approche ?



Je ne pense pas.

Peut être avez vous des idées
Peut être est-ce déjà fait ?



Non mais c'est un sujet déjà abordé entre nous. Autant sous MySQL celà peut
être facile à mettre en oeuvre. Cà marche même déjà : si le serveur fait
tomber ta connexion, à l'ordre suivant l'accès se reconnecte
automatiquement. Suffit de faire un kill de ta session sous mysql pour t'en
convaincre.

Reste maintenant le cas des autres bases qui ne proposent pas de méthode
"Ping". Donc il nous faut trouver une moyen.

--
Emmanuel
Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, Roumegou Eric
ecrivait (wrote) :

Bonjour,

En C/S, quand on attaque une base (disons mysql), on a une connexion à
l'ouverture du projet (une fenetre login/password par ex) et on va
deconnecter à la fermeture du projet.
Connexion persistante donc et facile à gérer.



Dans le cas d'une appli client/serveur en réseau local ou distant,
ouvrir la connexion en début de session peut constituer une bonne
solution (encore qu'avec MySQL, je n'en sois pas persuadé...).

En mode Web, je procède de la mème façon et c'est plus problématique.
J'ai une cnx en init de projet, et un mysqldeconecte à la fermeture du
projet WB. Le souci est que l'on a du mal à gérer la sortie de
l'internaute, que la session reste active ensuite pendant longtemps et
que l'on monte vite à un nbre de connexions qui peut faire s'écrouler
le serveur mysql.



Problème classique lors d'échanges HTTP... Une première approche peut
consister à tuer la session après un certain temps d'inactivité.

Donc la solution serait connexion/lecture ou ecriture/déconnexion à
chaque requete ?



Si on raisonne en échanges HTTP, c'est la meilleure solution à mon avis.
C'est en tous cas comme ça que je procède.

Outre le fait que c'est un peu lourdingue, cela ,nbe va-t-il pas être
pénalisant en tps de réponse ?



En temps de réponse, d'après mon expérience en environnement php/MySQL,
c'est totalement négligeable.

Et peut-on monter cela le plus haut possible en prog (dans la classe)
afin de ne pas modifier toute la prog.



Ne connaissant pas Webdev, je n'ai pas de réponses sur ce point. En PHP,
j'appelle en début de page par un include une fonction de connexion
automatique à la base, et en fin de traitement je ferme la connexion.

Au passage, lorsque je programmais en Windev, je procédais de la même
façon en ouvrant et fermant les fichiers systématiquement bien que
Windev sache gérer ça automatiquement. En environnement Windows, le
procédé à l'avantage de forcer l'écriture des données en cache sur le
disque...

A chaque SQLexec, si la cnx n'est pas active il la rétablit et
evenntuellt un param optionnel, decnxApresúux qui déconnecte une fois
la requete effectuée (tt seul).



Ca me paraît une bonne approche, mais encore une fois je ne connais pas
Webdev...

--
Eric
Avatar
Daniel
Roumegou Eric writes:

Bonjour,
un pb que je soumet à votre sagacité.

En C/S, quand on attaque une base (disons mysql), on a une connexion à
l'ouverture du projet (une fenetre login/password par ex) et on va
deconnecter à la fermeture du projet.
Connexion persistante donc et facile à gérer.

En mode Web, je procède de la mème façon et c'est plus problémati que.
J'ai une cnx en init de projet, et un mysqldeconecte à la fermeture du
projet WB. Le souci est que l'on a du mal à gérer la sortie de
l'internaute, que la session reste active ensuite pendant longtemps et
que l'on monte vite à un nbre de connexions qui peut faire s'écrouler
le serveur mysql.

Donc la solution serait connexion/lecture ou ecriture/déconnexion à
chaque requete ?


C'est le plus simple à mettre en oeuvre.

Outre le fait que c'est un peu lourdingue, cela ,nbe va-t-il pas être
pénalisant en tps de réponse ?

Et peut-on monter cela le plus haut possible en prog (dans la classe)
afin de ne pas modifier toute la prog.



Concernant PHP voir mysql.allow_persistent qui permet de changer le
comportement du serveur.

http://www.pyrenet.fr/docs/php/features.persistent-connections.html

Un truc du genre
j'ai une méthode où je décris la cnx
A chaque SQLexec, si la cnx n'est pas active il la rétablit et
evenntuellt un param optionnel, decnxApresúux qui déconnecte une
fois la requete effectuée (tt seul).



Peut être les travaux sur php4wd ont dégrossi cette approche ?
Peut être avez vous des idées
Peut être est-ce déjà fait ?

Merci de vos réponses.


--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci dessus pour me contacter en privé)





--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, Daniel
ecrivait (wrote) :

Bonjour,

Concernant PHP voir mysql.allow_persistent qui permet de changer le
comportement du serveur.

http://www.pyrenet.fr/docs/php/features.persistent-connections.html



Ca dépend des serveurs...

En hébergement mutualisé, nombreux sont les serveurs MySQL qui
n'acceptent pas les connexions persistantes.

--
Eric