Skip to content

Instantly share code, notes, and snippets.

@ChristopheBoucaut
Last active August 29, 2015 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ChristopheBoucaut/f47d22a914e36f308d09 to your computer and use it in GitHub Desktop.
Save ChristopheBoucaut/f47d22a914e36f308d09 to your computer and use it in GitHub Desktop.
Mettre en place un système de serveur maître et esclaves sous Prestashop
<?php
/**
* Rev 0.01 du 2013/04/03 :
* - Correctif du bug lors de l'ajout de produits
* - Passage de la variable $ajout_server_ok en variable static
**/
abstract class Db extends DbCore
{
/**
* Via cette variable, on va éviter d'ajouter plusieurs fois le serveur esclave
* @var: bool $ajout_server_ok
**/
private static $ajout_server_ok = false;
/**
* On redéfinit la méthode __construct() du parent pour lui ajouter les serveurs
* @param string $server Server address
* @param string $user User login
* @param string $password User password
* @param string $database Database name
* @param bool $connect If false, don't connect in constructor (since 1.5.0)
*/
public function __construct($server, $user, $password, $database, $connect = true)
{
// Si jamais l'ajout du serveur esclave n'a pas encore été fait
if(! self::$ajout_server_ok){
// on ajoute le serveur esclave à la liste des serveurs
parent::$_servers[] = array('server' => _DB_SERVER_SLAVE_,
'user' => _DB_USER_,
'password' => _DB_PASSWD_,
'database' => _DB_NAME_); /* MySQL Slave server */
// On modifie la variable pour éviter de refaire l'ajout du serveur esclave
self::$ajout_server_ok = true;
}
// On lance le constructeur par défaut pour que tout fonctionne bien :p
parent::__construct($server, $user, $password, $database, $connect);
}
}
<?php
// Cette constante permet d'activer l'utilisation des serveurs maître/esclaves
define('_PS_USE_SQL_SLAVE_', 1);
// On définit l'adresse du serveur esclave
define('_DB_SERVER_SLAVE_', 'adresse-serveur-esclave');
// On définit l'adresse du serveur maître
define('_DB_SERVER_', 'adresse-serveur-maitre');
// On définit les identifiants pour les BD maître et esclaves (identifiants identiques)
define('_DB_NAME_', 'nom_bd');
define('_DB_USER_', 'identifiant_bd');
define('_DB_PASSWD_', 'mdp_bd');
// le reste du code ne nous concerne pas
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment