Modèle de connexion à la base de données singleton PHP



0 Answers

Question

J'ai travaillé sur un petit projet utilisant PHP et MySQL. J'ai beaucoup lu sur les meilleures pratiques en matière de gestion d'une connexion, etc.

J'ai également implémenté (suite à certains articles trouvés) une classe singleton pour gérer les connexions MySQL.

require_once 'config.inc.php';
class DbConn {

    private static $instance;
    private $dbConn;

    private function __construct() {}

    /**
     *
     * @return DbConn
     */
    private static function getInstance(){
        if (self::$instance == null){
            $className = __CLASS__;
            self::$instance = new $className;
        }

        return self::$instance;
    }

    /**
     *
     * @return DbConn
     */
    private static function initConnection(){
        $db = self::getInstance();
        $connConf = getConfigData();
        $db->dbConn = new mysqli($connConf['db_host'], $connConf['db_user'], $connConf['db_pwd'],$connConf['db_name']);
        $db->dbConn->set_charset('utf8');
        return $db;
    }

    /**
     * @return mysqli
     */
    public static function getDbConn() {
        try {
            $db = self::initConnection();
            return $db->dbConn;
        } catch (Exception $ex) {
            echo "I was unable to open a connection to the database. " . $ex->getMessage();
            return null;
        }
    }
}

Mais ... Si mon site Web a 10K visiteurs en même temps et que j'appelle à chaque fois mon objet singleton, devrais-je m'attendre à des problèmes de performance? Je voulais dire, ne devrais-je pas avoir une sorte de pool de connexions au lieu d'un singleton?




Related