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

SGBD Perl Discussion :

connexion persistante avec perl


Sujet :

SGBD Perl

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 44
    Points
    44
    Par défaut connexion persistante avec perl
    Hi,
    svp je veux savoir s'il y a un module perl qui assure la connexion persistante a mysql sachant que ceci est possible avec php
    utilistation de mysql_pconnect
    thnx

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    elle est persistante par default: c'est DBD::mysql qui gere la chose de maniere transparente. Tant que tu ne detruit pas ton $dbh la connexion reste active (sous reserve d'un timeout evidemment).
    Par contre evidemment la chose est differente si tu es en CGI, puisque le processus meurt à la fin de chaque requete, et que tu dois donc réouvrire une nouvelle connexion. Dans ce cas il faut utiliser FastCGI ou mod_perl (equivalent à mod_php pour perl)
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 44
    Points
    44
    Par défaut
    merci pospos
    cela vrai dans un seul programme !! dans mon cas le numbre des programmes lance pour arriver a n>100 et ceci va genere le problem de too many connection et tous c program demande une connexion to mysql
    1ere solution a ete d'utiliser mysql_pconnect mais avec php je veux savoir si ceci est possible avec perl ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    je ne comprend pas ton problème
    tu lance plusieurs scripts? Si oui alors c'est normal que chaque script ai besoin de sa propre connexion, il n'y a pas moyen de faire autrement (ni en php).
    Si tout est dans le meme script alors il faut ouvrire une seule connexion et n'utiliser que celle la.
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 44
    Points
    44
    Par défaut
    no c possible avec php
    mysql_pconnect() se comporte exactement comme mysql_connect(), mais avec deux différences majeures :
    Premièrement, lors de la connexion, la fonction essaie de trouver une connexion permanente déjà ouverte sur cet hôte, avec le même nom d'utilisateur et de mot de passe. Si une telle connexion est trouvée, son identifiant est retourné, sans ouvrir de nouvelle connexion.
    Deuxièmement, la connexion au serveur MySQL ne sera pas terminée avec la fin du script. Au lieu de cela, le lien sera conservé pour un prochain accès (mysql_close() ne terminera pas une connexion persistante établie par mysql_pconnect()).

    mais avec perl je sais pas !!!!

  6. #6
    Membre actif Avatar de mobscene
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 331
    Points : 234
    Points
    234
    Par défaut
    Heu tu peut tenter une architecture " décentralisé " du genre

    [script] <---> [provider sql] <---> [mysql]
    ton script ouvre un socket vers le "provider sql" en spécifiant le nom de la connexion (si ta plusieurs serveur sql), tu envoie aussi la requete a adresser , les données a prendre dans la dbd , et le type de retour de données

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $requete = {
     'conn_name' => 'serveur 1',
     'conn_request' => 'la requete',
     'conn_request_arg' => [$i,$m,$...] || undef,
     'conn_return' => hash, array, single
    };
    tu sérialise le hash avec storable tu le balance a travers le séreau , tu désérialiez au niveau du provider tu effectue les opérations puis le provider sérialise sont hash et le rebalance sur la meme socket

    Le provider pourrais renvoyer les données comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = { 'conn_return' => [], {}, string };
    on pourrais imaginer ajouter un argument au provider en lui disant de mettre la requete en cache

    ou meme combien de temps la garder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'conn_refresh' => 600 s -> 10 mn
    Mais pour éviter un timeout du provider utiliser sous win32 (pas tester sous nux et autre), faire un :
    use PerlEx:BI (); qui garantie un connexion permanente au lieu de use DBI;

    Edit : Chui pas cinglé juste maso
    Everybody have in their the potential to be their own god : Marilyn Manson

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    naourass, ce que tu decrit n'est possible que dans un environnemlent persistant type mod_php, et donc si tu veux le reproduire en perl (et que tu es bien dans l'optique de faire un script web...) il te faut, comme je te l'expliquais dans ma premiere reponse, utiliser mod_perl ou fastCGI pour avoir un environnement persistant. Car si ton interpreteur est fermé alors toutes ses connexions serton elles aussi fermée, quelque soit le language le pays le lieu l'année le jour ou leur mère. une connexion c'est un socket.
    Une fois que tu a ton environnement persistant alors oui tu peux garder ta connexion ouverte (il suffit de garder ton handler de database), sinon non.
    Et c'est impossible de serialiser un socket (on peu le passer d'un process à l'autre sous unix, mais c'est assez galere, et il faudrait en plus conserver l'objet).
    Il existe dans DBI une option pour garder en cache une connexion (cad reprendre une connexion existante plutot qu'en ouvrire une nouvelle) mais ca revient exactement au meme que de garder ton $dbh: si ton process se termine c'est fini.
    Donc decrit nous exactement ton environnement (apache?) et ce que tu veux faire, et pourkoi tu a besoin d'autant de scripts en //.
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 44
    Points
    44
    Par défaut
    Hi,
    merci a vous tous sur les explication le module Apache:BI qui ne va ouvrir la connection qu'une seule fois
    http://search.cpan.org/~pgollucci/Ap.../Apache/DBI.pm

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    ce module a besoin de mod_perl (d'ou ma question). De plus il ne partage pas de connexion entre les differents process: il permet juste à un process de conserver sa connexion d'une requete à l'autre
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Conseils sur Connexion persistante avec PDO ?
    Par QAYS dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/08/2013, 22h43
  2. [PDO] [PHP 5.3] Problème de connexion persistante avec PDO
    Par Benjamin Delespierre dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/03/2012, 14h24
  3. connexion postgresql avec perl
    Par pepedelabrague dans le forum SGBD
    Réponses: 11
    Dernier message: 20/06/2007, 15h15
  4. connexion persistante avec c
    Par naourass dans le forum C
    Réponses: 3
    Dernier message: 14/12/2006, 10h32
  5. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37

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