Jump to content

Подключение Simpla к 2м базам данных


Recommended Posts

Добрый вечер форумчане, подскажите может кто то реализовывал данный метод:

Надо подключиться к двум базам данных

первая для товаров, заказов, брендов, категорий, свойств, картинок, варианты, комментариев
вторая для всего остального (настройки, страницы, блог, дизайн и т.д.)


P.S. Зачем? Надо ))) если серьезно то более 12 магазинов в них все товары, заказы, бренды, категории свойства, картинки, варианты, комментарии одинаковые будут 

В одну базу данных запихивать все таблицы с разными префиксами не вариант

Кто может подсказать как это сделать? 

Link to post
Share on other sites

нужно переключатся между базами или держать одновременное подключение к множествам баз?

если переключатся то https://github.com/pikusov/Simpla/blob/9fefafa38dc739b4348b4a2940cba8bc8e4363ed/api/Database.php#L46 в этом месте достаточно подменять параметры подключения

Edited by DaVinci
Link to post
Share on other sites

Делал когда то. Расписывать сильно нет времени. Все что нужно есть в архиве.

Из основного - нужно будет переименовать config/config.php в config/config.cfg и в нем закомментировать секции (все что идет в скобках ;[xxx]) - для примера навсяк кинул. После этого расширяться возможности. Можно будет для отдельных хостов делать свои конфиги


Примеры в папке config

Параметры БД в database.cfg

simpla.db_server - simpla (что начинается с simpla - основная БД) 

К ней можно обращаться:

$this->db->simpla->query(xxxx);
$this->db->query(xxxx);

далее создаем какие нам нужно (в примере):

manticore.db_server = 127.0.0.1;

После чего что бы обратиться к этой базе в коде вызываем 

$this->db->manticore->query(xxxx);

Если такое подключение не нужно - то можно замутить через подконфиги в папке config.host

В Simpla.php добавить новые api и передачу объекта в классы 

// Сохраняем для будущих обращений к нему
self::$objects[$name] = new $class($this);

 

В общем дерзайте


Тут файлы не крепятся. Скачать: 

https://drive.google.com/file/d/1zJLkzCCNYtA_-_az_mQGUzkQvq8_ygA0/view?usp=sharing

 

Edited by yr4ik
Link to post
Share on other sites

Делалось когда так (идейно неправильно, но весьма быстро и легко):

1.  В api/Simpla.php добавить строку
    'db2'         => 'Database2',
2.  Создать api/Database2.php как копию api/Database.php
3.  В api/Database2.php изменить
3.1 class Database2 extends Simpla
3.2 $this->mysqli = new mysqli($this->config->db_server2, $this->config->db_user2, $this->config->db_password2, $this->config->db_name2);
4.  В config/config.php добавить

;Сервер базы данных
db_server2 = "localhost"

;Пользователь базы данных
db_user2 = "u"

;Пароль к базе
db_password2 = "p"

;Имя базы
db_name2 = "simpla2"

5. Использование:

require_once('api/Simpla.php');
$simpla = new Simpla();

$simpla->db->query("SELECT * from __currencies ");
print_r($simpla->db->results());

 $simpla->db2->query("SELECT * from __currencies ");
print_r($simpla->db2->results());

Edited by phukortsin
Link to post
Share on other sites
В 26.11.2020 в 20:55, ps-simpla сказал:

Добрый вечер форумчане, подскажите может кто то реализовывал данный метод:

Надо подключиться к двум базам данных

первая для товаров, заказов, брендов, категорий, свойств, картинок, варианты, комментариев
вторая для всего остального (настройки, страницы, блог, дизайн и т.д.)


P.S. Зачем? Надо ))) если серьезно то более 12 магазинов в них все товары, заказы, бренды, категории свойства, картинки, варианты, комментарии одинаковые будут 

В одну базу данных запихивать все таблицы с разными префиксами не вариант

Кто может подсказать как это сделать? 

Будут реализованы 12 поддоменов? тогда просто сделать 12 баз, и в зависимости от поддомена подключать определенную базу. 

config.php   - site.ru

config-msk.php  msk.site.ru

config-spb.php  spb.site.ru

Проверяем на наличие поддоменов и подставляем префиксы аналогично поддомену, в Api/Config.php. А там дальше останется только создать базы.

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...