YuZi

ВОПРОС: Как подключить один магазин к разным БД Mysql ?

Рекомендуемые сообщения

YuZi    7

В CMS Opencart подключение к БД MySQL проходит через файл config.php где и указываются данные к ОДНОЙ базе MySQL.

Как подключить ДВЕ базы MySQL ?

Например:

Есть два магазина на движке opencart 1.5.3.1, каждый из них использует свою БД MySQL и свой файл config.php

Нужно сделать что бы из второго магазина было подключение к БД первого магазина, а именно таблицы 'customer', тоесть информация о покупателях общая для двух магазинов.

При этом удалены все возможные обращения к БД из личного кабинета покупателя, дабы избежать обращение к разным БД.

Вариант с вложенными магазинами (что предусмотренно в движке OpenCart) не подходит из-за недостатка в качественной SEO оптимизации магазина и использование только одного домена.

Я отдаю себе отчёт что нагрузка на сервер увеличится...

Изменено пользователем YuZi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Einshtein    622

а не проще будет периодически делать импорт экспорт этих таблиц?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YuZi    7

а не проще будет периодически делать импорт экспорт этих таблиц?

Я рассматривал этот вариант, он конечно проще в реализации, но мне нужна динамическая связь двух магазинов которая может меняться ежеминутно. Так пришел к выводу что проще будет сделать запрос к одной таблице БД

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 411

В CMS Opencart подключение к БД MySQL проходит через файл config.php где и указываются данные к ОДНОЙ базе MySQL.

Как подключить ДВЕ базы MySQL ?

index.php

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
// Database 2

$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);

$registry->set('db2', $db2);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YuZi    7

Добавил в файл index.php два подключения к БД:

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);


// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);

а также прописал в файле config.php данные к подключению двух БД:

// DB
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', '111);
define('DB_PASSWORD', '1234567890');
define('DB_DATABASE', '111');
define('DB_PREFIX', '111_');


// DB2
define('DB_DRIVER2', 'mysql');
define('DB_HOSTNAME2', 'localhost');
define('DB_USERNAME2', '222');
define('DB_PASSWORD2', '1234567890');
define('DB_DATABASE2', '222');
define('DB_PREFIX2', '222_');

теперь Магазин Умер... Не выдает никаких ошибок, только чистый белый фон,

Что я не так сделал или что-то где-то надо дописать еще?

П.С. Использую Opencart 1.5.3.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
estart    0

Нужно сделать что бы из второго магазина было подключение к БД первого магазина, а именно таблицы 'customer', тоесть информация о покупателях общая для двух магазинов.

Есть рабочие архитектурные решения много ИМ на одной базе, а один магазин к 2 базам что-то Вы перемудриваете :) имхо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YaSe    23

Настройте репликацию между площадками, как вариант

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
estart    0

Либо оба ИМ к 1С Бухгалтериии и обрабатывать там.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YuZi    7

Есть рабочие архитектурные решения много ИМ на одной базе, а один магазин к 2 базам что-то Вы перемудриваете :) имхо

Приведите пожалуйста пример таких архитектурных решений, или имеется ввиду одна БД с разными префиксами для каждого ИМ ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YuZi    7

Настройте репликацию между площадками, как вариант

из всего выше сказанного я знаю ДВА СЛОВА: "настройте" и "вариант" =))

Что такое репликация между площадками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YuZi    7

Либо оба ИМ к 1С Бухгалтериии и обрабатывать там.

Очень дорого получается если учесть все моменты:

- покупка самой платформы 1С

- установканастройка платформы

- программинг конфигураций под конкретные запросы

- обновленияподдержка ПО

- и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YaSe    23

из всего выше сказанного я знаю ДВА СЛОВА: "настройте" и "вариант" =))

Что такое репликация между площадками?

Тогда забудьте, вам это не подойдет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 411

теперь Магазин Умер... Не выдает никаких ошибок, только чистый белый фон,

Что я не так сделал или что-то где-то надо дописать еще?

П.С. Использую Opencart 1.5.3.1

у меня этот вариант работает. разбирайся в этом направлении

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YuZi    7

у меня этот вариант работает. разбирайся в этом направлении

Вы правы, все проверил - все работает, вот только подключается только одна БД, та которая стоит последней в списке.

если вот так:

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);

// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);
то идет подключение всего магазина к базе БД2

а если вот так:

// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);
// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
То к первой...

В итоге одна база задействуется...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
regr0up    1

если еще интересно... мало ли))) 

чтобы это исправить, нужно в /system/database/mysql.php

в функции дописать mysql_connect(..., $password, TRUE);

 

и тогда делайте сколько угодно подключений.

 

---

Выпрямляем OpenCart...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
itmades    0

у меня этот вариант работает. разбирайся в этом направлении

У меня он тоже не убивает сайт: возможно проблема хостинга или сервера,

Но никаких результатов не дает: товары из второй базы не берутся

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    158

Вы что-то перемудриваете. OpenCart позволяет создавать разные магазины с разными наборами товаров модулей шаблонов на разных доменах и т.д. Не делайте костыли, хотя мне все равно.

 

В конце концов можно написать модуль/скрипт синхронизации покупателей, который при определенном событии (регистрация/активация клиента) будет синхронизировать данные покупателей из двух БД.

Изменено пользователем halfhope

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От WebDevYV
      Есть скрипт, который на локальной машине работает корректно, но при установке его на сервер в файл product.tpl (cms OpenCart 2.3.0.2, theme Next Default 3)ничего не происходит. Скрипт берет цену из таблицы с учетом id товара. Ошибок код никаких не выводит. Спасибо за помощь.
      <?php $host = 'хост'; $db = 'имя бд'; $user = 'юзер нейм'; $pass = 'пароль'; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new PDO($dsn, $user, $pass, $opt); $stmt = $pdo->prepare('SELECT price FROM oc_product WHERE product_id = ?'); $stmt->execute([$_GET['id']]); foreach ($stmt as $row) { echo 'price '.$row['price'] . "\n"; } ?>  
    • От Devorian
      Всем привет, делаю магазин для заказчика.
      Платформа Open Cart 2.3.0
      конфигурация VPS:
      4 core, 8 Gb RAM
      CentOS 6.x
       
      Собственно проблема:
      В магазине 20 тыс товаров. Подсчет товаров в категории отключен, установлен v2 cache модуль. Сжатие выставлено на 8.
       
      При открытии категории на MySQL происходит загрузка одного из ядер на 100% на несколько секунд. Как результат, категория открывается 7-10 секунд. Заказчик, само собой, бесится. Также по базе - см, скриншот. Болезнь показана в динамике.
       
       




    • От a1exnet
      Ребята, привет,
      У меня в PhpMyAdmin таблицы выходят все очень разбросано, накладываясь друг на друга и связи не отображаются.
      Есть у кого-нибудь диаграмма и схема базы данных MySQL Opencart 2.1.x?
      Как тут:
       
    • От sv2109




      Название: SQL менеджер SQL Buddy
      Добавил: sv2109
      Добавлен: 26 июл 2013
      Категория: Обмен данными
      Метод активации: Без активацииСайт разработчика: sv2109.com
      Ioncube Loader: Нет


      SQL Buddy это простой sql менеджер. Намного проще но и намного легче phpMyAdmin-a
      С помощью него можно:
      создавать базы данных
      создавать, редактировать, удалять таблицы
      изменять структуру таблиц
      изменять данные в таблицах
      выполнять sql запросы
      делать импорт и экспорт таблиц
      итд

      + мульти язычный интерфейс (поддерживает 47 языков включая русский и украинский)
      Перед использованием настоятельно рекомендую сделать копию базы данных!
      Работает на :
      - ocstore 1.5.4.1
      - opencart 1.5.5.1
      но скорее всего будет работать на всех 1.5.x версиях движка
      Возможно вас заинтересуют другие модули автора

      Нажмите здесь, чтобы скачать файл
    • От sv2109
      SQL Buddy это простой sql менеджер. Намного проще но и намного легче phpMyAdmin-a
      С помощью него можно:
      создавать базы данных
      создавать, редактировать, удалять таблицы
      изменять структуру таблиц
      изменять данные в таблицах
      выполнять sql запросы
      делать импорт и экспорт таблиц
      итд

      + мульти язычный интерфейс (поддерживает 47 языков включая русский и украинский)
      Перед использованием настоятельно рекомендую сделать копию базы данных!
      Работает на :
      - ocstore 1.5.4.1
      - opencart 1.5.5.1
      но скорее всего будет работать на всех 1.5.x версиях движка
      Возможно вас заинтересуют другие модули автора
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу