Mettre en place un système de serveur maître et esclaves sous Prestashop
Salut à tous !
Au programme de cet article : mettre en place un système de serveurs maître/esclaves correct sous Prestashop. Pourquoi je précise correct ? Tout simplement car ma solution fait en sorte que même lors d’une maj Prestashop, vous n’aurez rien à refaire pour que votre système de serveur maître/esclaves fonctionne (sauf changement de fonctionnement dans Prestashop bien sûr ^^’).
Les fichiers concernés :
- /config/settings.inc.php => modification
- /classes/db/Db.php => on va utiliser l’override (Pour plus d’information sur l’override, cliquez-ici)
- /override/classes/db/Db.php => modification
Comment on va faire ? On va commencer par adapter LE seul fichier de config qui n’est pas modifié en cas de mise à jour de prestashop, je parle ici du fichier /config/settings.inc.php pour y préciser via une constante que l’on veut exploiter des serveurs maître/esclaves et on va également y préciser l’adresse d’un serveur esclave en partant du principe que les deux serveurs ont les mêmes identifiants (pour gagne en code, à vous d’adapter si ce n’est pas le cas ^^). Voici donc le code du fichier /config/settings.inc.php :
Ensuite, on va exploiter le système d’override de Prestashop qui permet de surcharger des classes/controllers en les plaçant dans le dossier /override de votre projet. Du coup pas besoin de modifier le fichier /classes/db/Db.php, on va directement modifier (ou créer s’il n’existe pas) le fichier /override/classes/db/Db.php. Dans ce fichier, on va créer une classe qui se nomme Db et qui va étendre DbCore. Ensuite c’est tout simple, on va préciser une variable pour n’ajouter qu’une seule fois le serveur esclave à la liste des serveurs à utiliser. Puis on redéfinit la méthode __construct() pour que dès qu’on instancie un élément Db et qu’on n’a pas encore ajouté le serveur esclave, on modifie la variable $_servers de DbCore pour lui ajouter le serveur esclave. Voici le code du fichier /override/classes/db/Db.php :
Et voilà ! c’est fini et normalement tout fonctionne bien. Prestashop gère lui même le fait de savoir si on doit ou non utiliser le serveur maître ou esclave en fonction des cas de figure.
C’est la fin de ce petit tuto sur Prestashop qui entame sûrement une future série sur ce CMS étant donné que je suis en train de travailler avec cet outil et que je rencontre beaucoup de soucis dont je trouve rarement les réponses sur le net (ou difficilement).
Commentaires récents