IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Connexion persistante access dans session asp


Sujet :

ASP

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Connexion persistante access dans session asp
    Bonjour,

    j'ai développer un e-commerce il y a quelques années en asp et access.
    A ce moment là j'avais cru bon de stocker la connexion à la base dans une variable de session.
    Ce qui veux dire que la connexion à la base est persistante pendant toute la durée de la session.
    Aujourd'hui le site reçoit des piques de connexion de plus de 200 sessions ouvertes simultanément,
    donc autant de connexion à la base.

    Or j'arrive au limite de se que peux supporter access, le site rame.

    J'ai dans l'idée de modifier cela en créant une connexion par page asp qui durera donc le temps de charger les données.
    Le temps de la connexion sera donc de quelques secondes, le temps de faire les requetes.
    Par contre elle se répétera à chaque pages lancée par un utilisateur.

    Avant de me lancer dans ce chantier qui va malheureusement demander de modifier toutes les pages asp du site qui se connecte.
    J'ai lu que par defaut la base access garde la connexion ouverte environ 10min pour des soucis de perf justement.

    Donc est-ce judicieux de procéder ainsi ? cela risque t-il d'etre encore plus gourmand ?
    Est-ce que ca va vraiment changer quelque chose ? si access garde la connexion ouverte et fourni la meme connexion à la
    page suivante ?

    J'avais dans l'idée d'utiliser une class DB_factory qui fournirait un service d'accès et avec du coup
    un timeout de pas plus de 5 minutes pour soulager la base, enfin si c'est possible.

    J'attend vos conseils,

    merci,

    Ludo.

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Tout d'abords, evidement pas de connexion en session.

    Ensuite, oui, une factory c'est bien. Il y a unexemple un peu abouti ici: http://www.developpez.net/forums/d50...s-sources-asp/

    Une connexion par page, transmise à tous les morceaux de code qui en ont besoin.

    Dernier conseil, change de base de données. Access n'est pas prévu pour gérer beaucoup d'utilisateurs: SQL Server, voir MySQL, comme tu veux.

    A+

  3. #3
    Poumtschak
    Invité(e)
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Tout d'abord, évidement pas de connexion en session.
    Bonjour,

    Je me permets de remonter ce fil car je suis surpris de cette réponse alors que mon bouquin de référence sur ASP (qui n'en est peut-être pas une) suggère exactement le contraire et déconseille d'ouvrir une connexion par page.

    Pour une toute petite appli ASP sur base Access 97 - un héritage - avec très peu d'utilisateurs (<5), j'ai empiriquement pris l'option de stocker les connexions en variable de session. Cependant, vu la lenteur lors d'une paire d'accès concurrents, je soupçonne un problème là-dessus (ou sur les options de curseur/verrou mais je n'y connais rien ).

    Merci de m'éclairer sur les bonnes pratiques en la matière.

    NB: j'ai bien commencé à envisager une migration de la base sur SQL Server 2005 Express Edition, mais le rapport complexité de mise en œuvre / gain attendu me paraît quelque peu excessif pour nos besoins.

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Il faut faire la différence entre variables de session (une pour chaque utilisateur) et d'application (une seule commune pour tous les utilisateur).

    A mon avis les deux ne comportent que des inconvénients.
    • Session: cette variable est accessible uniquement par l'internaute qui la créé en arrivant sur le site. Elle reste active pendant un temps défini dans IIS (20 minutes par défaut) ou dans chaque page. Ce qui veut dire que même quand l'internaute part, la connexion reste ouverte et inutilisable pour les autres visiteurs.
    • Application: tous les internautes utilisent la meme connexion les uns après les autres. Une connexion ne peut traiter qu'une seule requete à la fois. Ca risque de faire des embouteillages...
    Une seule chose à retenir. Si on ne se sert pas d'un objet quel qu'il soit, il ne doit pas exister.

    A+

  5. #5
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Sans aller jusqu'à critiquer le bouquin de référence que tu cite, c'est bien la première fois que je vois conseiller une connection à une BDD en variable de session, et pire encore en variable d'application. Si à chaque fois que google passe sur ton site (et yahoo, et MSN, etc ...) pour indexation, une connexion est créée, et dure le temps de la session (20mn par défaut, mais c'est modifiable), ou tout simplement un internaute qui passe "par hasard", heu ... j'ai peut-être du mal avec le concept d'optimisation. D'autant que les variables d'application et de session ne sont pas indexées, ce qui signifie qu'elle sont rangées dans un tableau, et que lorsqu'on en appelle une, ASP va défiler tout le tableau jusqu'à trouver ce qu'il cherche. Vous avez dit "performances" ?

    200 connexion simultanées à ACCESS ? t'es sûr de ton coup, là ? Je croyais que la limite était de 32.

    Perso, et on m'a toujours conseillé de faire ainsi, j'ouvre et referme ma connexion dans chaque page.

    Si tu attends du trafic, je rejoinds immobilis : change de BDD. ACCESS a des performances assez impressionnantes en interrogation, mais ça s'arrête là. Il existe des utilitaires de migration vers SQL server, mySQL etc ...

    Le temps de la connexion sera donc de quelques secondes
    D... merci, c'est quand même beaucoup plus rapide que ça (définis les bons index !)

    Voili voilou, c'était mon humble avis

  6. #6
    Poumtschak
    Invité(e)
    Par défaut
    Tout d'abord, puisqu'il semble y avoir confusion, je précise que je ne suis pas l'auteur du post original, et que mon contexte n'est pas le même (à savoir : application plutôt bricolée, intranet et très faible nombre d'utilisateurs).

    Ce qui ne dispense pas de continuer à glaner des informations sur les bonnes pratiques auprès des spécialistes.

    Au niveau du positionnement des connexions, j'ai cru comprendre que - quelle que soit la méthode choisie - interviennent plusieurs dispositifs de cache par IIS, le fournisseur d'accès à la BDD, le système hôte, etc. En effet, j'ai remarqué que lors de la mise à jour de listes déroulantes via AJAX, pour une requête avec des paramètres identique le système récupérait les données beaucoup plus rapidement après la requête initiale.

    Pour en revenir au bouquin, dans la page suivante (pas dispo sur Google Books), l'auteur(e) se contredit en déconseillant l'ouverture d'une connexion au niveau session en cas d'utilisation d'OLE DB, cette dernière solution gérant parait-il les pools de connexion de façon transparente.

    En somme, tout ceci est pour le moins confus pour l'amateur mal éclairé.

    Merci de vos... éclaircissements.

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Ben j'ai pas grand chose à ajouter que ce que j'ai déjà dit.

    Tu veux savoir quoi de plus?
    Au niveau du positionnement des connexions, j'ai cru comprendre que - quelle que soit la méthode choisie - interviennent plusieurs dispositifs de cache par IIS, le fournisseur d'accès à la BDD, le système hôte, etc. En effet, j'ai remarqué que lors de la mise à jour de listes déroulantes via AJAX, pour une requête avec des paramètres identique le système récupérait les données beaucoup plus rapidement après la requête initiale.
    Ok, mais ça change rien aux fondamentaux.
    en cas d'utilisation d'OLE DB, cette dernière solution gérant parait-il les pools de connexion de façon transparente.
    En ASP3 c'est pas très clair...

    A+

Discussions similaires

  1. Lire requête access dans page ASP
    Par wanou44 dans le forum ASP
    Réponses: 3
    Dernier message: 19/10/2006, 12h05
  2. connexion ms access asp
    Par momov dans le forum ASP
    Réponses: 6
    Dernier message: 20/06/2006, 12h49
  3. Réponses: 1
    Dernier message: 06/04/2006, 15h35
  4. [FrontPage 2003] Afficher éléments base Access dans page ASP
    Par laville dans le forum Autres langages
    Réponses: 3
    Dernier message: 03/08/2005, 09h27
  5. emuler des pages asp avec connexion a access
    Par laville dans le forum ASP
    Réponses: 2
    Dernier message: 01/06/2005, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo