PHP singleton-Datenbank-Verbindung-Muster

Ich arbeite an einem kleinen Projekt mit PHP und MySQL. Ich habe viel gelesen, um sich über best practices zum verwalten einer Verbindung und so weiter.

Habe ich auch implementiert (im folgenden werden einige Beiträge gefunden um) eine singleton-Klasse zur Verwaltung von MySQL-verbindungen.

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;
        }
    }
}

Aber... Wenn meine Webseite hat wie 10K Besucher gleichzeitig und ich rufe jedes mal, wenn mein singleton-Objekt, sollte ich erwarten, dass performance-Probleme? Ich meinte, sollte ich nicht eine Art pool von verbindungen anstatt eines singleton?

Und was ist der Widerspruch? Können Sie einfach richten Sie die Anschlüsse ein, beharrlich zu sein und verwenden Sie ein singleton. Dieses Modell wird verwendet, so dass eine einzelne Anfrage nicht schließen, zweimal, um die Datenbank, sondern zwei verschiedene clients führen zwei verschiedene Instanzen der Skript, so wird die Verwendung von zwei verschiedenen verbindungen
Sicher. Wie dumm ich bin. Danke!
Danke für die Erklärung. Viele von uns gar nicht darüber nachdenken.

InformationsquelleAutor LucasM | 2014-02-17

Schreibe einen Kommentar