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


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?