У меня есть две базы данных на разных серверах, которые мне нужно синхронизировать. Две базы данных определены в моей конфигурации базы данных, и я настраиваю соединения как таковые:
Код: Выделить всё
$DB1 = $this->load->database('master', TRUE);
$DB2 = $this->load->database('live', TRUE);
Как я могу получить все содержимое таблицы «продукты» в $DB1 и синхронизировать его в $DB2 — я мог бы просто усечь таблицу в $DB2 и записать полные данные (неэлегантно и может вызвать проблемы на работающем сайте) или я могу использовать codeigniter для правильной синхронизации второй таблицы; добавление, обновление и удаление записей по каждой записи?
Я пробовал:
Код: Выделить всё
$products = $DB1->from('products')->get()->result_array();
$count = count($products);
for($i = 0 ; $i < $count; $i++)
{
$q = $DB2->from('products')->where('id', $products[$i]['id'])->get();
if($q->num_rows() > 0)
{
[Update the data]
}
else
{
[Insert the data]
}
}
Но этот метод не учитывает записи, существующие в $DB2, которые были удалены из $DB1? Я предпочитаю этот метод обновления продуктов, но не могу размещать устаревшие продукты на действующем сайте.
Подробнее здесь:
https://stackoverflow.com/questions/220 ... -different