developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 10 years ago

Closed 10 years ago

#1235 closed bug (fixed)

jDb::createVirtualProfile et connexion par défaut.

Reported by: Torgan Owned by:
Priority: high Milestone: Jelix 1.2RC3
Component: jelix:db Version: 1.2RC2
Severity: major Keywords: jDb virtual profile
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Le fix du ticket #680 ne règle pas le rechargement du profil par défaut si c'est ce dernier qui est écrasé par la méthode. Voici un code qui fonctionne :

    /**
     * create a temporary new profile
     * @param string $name the name of the profile
     * @param array|string $params parameters of the profile. key=parameter name, value=parameter value.
     *                      same kind of parameters we found in dbProfils.ini.php
     *                      we can also indicate a name of an other profile, to create an alias
     */
    public static function createVirtualProfile ($name, $params) {
        if ($name == '') {
           throw new jException('jelix~db.error.virtual.profile.no.name');
        }

        if (self::$_profiles === null) {
            self::$_profiles = parse_ini_file (JELIX_APP_CONFIG_PATH . $gJConfig->dbProfils, true);
        }
        self::$_profiles[$name] = $params;
        unset (self::$_cnxPool[$name]);

        if (self::$_default === $name)
        {
            self::$_profiles['default']         = $params;
            self::$_profiles['default']['name'] = 'default';
            unset (self::$_cnxPool['default']);
        }
    }

Attachments (1)

jDb.class.php (7.8 KB) - added by Torgan 10 years ago.

Download all attachments as: .zip

Change History (3)

comment:1 Changed 10 years ago by Torgan

Il devait manquer ça au début en fait.

   /**
     * @var string name of the default profile
     */
    static private $_default = null;

Du coup j'inclue carrément tout mon ficheir jDb.class.php

Changed 10 years ago by Torgan

comment:2 Changed 10 years ago by laurentj

  • Component changed from jelix to jelix:db
  • Milestone set to Jelix 1.2
  • Priority changed from normal to high
  • Resolution set to fixed
  • Severity changed from normal to major
  • Status changed from new to closed

En fait le souci était ailleurs : quand on récupérait un profile avec le nom d'un alias, il y avait une nouvelle connection dans le pool, ça n'utilisait pas l'eventuelle connection existante correspondante sous le nom du profile original.

Donc ton code supplémentaire n'est pas nécessaire. Maintenant dans le pool on n'a qu'une connection pour chaque profile déclaré, peu importe le nombre d'alias.

Fixed http://bitbucket.org/jelix/jelix-trunk/changeset/101d1eba0ef4

Note: See TracTickets for help on using tickets.