- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 
                        //первый сайт - интернет магазин
//отрывок из функции редактирования, функции добавления, функции удаления товаров, в таблицу "export_catalogue" каждая строка - это "поле товара" и "новое значение поля"
//что-то на подобие лога изменений. Конечно копипаст всех полей товаров.
$this->insert($table = "`export_catalogue`", $fields = "`action`, `table`, `element`, `fields`, `value`", $values="'update', 'catalogue_files', '$catalogue_id', 'name_rus', '$name_rus'");
$this->insert($table = "`export_catalogue`", $fields = "`action`, `table`, `element`, `fields`, `value`", $values="'update', 'catalogue_files', '$catalogue_id', 'name_ger', '$name_ger'");
//файл xml_create_catalogue.php, который запускается по крону каждые 5 минут, создаёт xml файлы. Каждый файл содержит в себе изменение одного поля товара
$result_export_array = $global->select_all($fields = "*", $table = "`export_catalogue`", $where = "`create` = '0' ORDER BY `id` ASC");
for ($i=0; $i<count($result_export_array); $i++){
  $doc = new DOMDocument('1.0', 'utf-8');
  $doc->formatOutput = true;
  ...
  // название fields - не мой коммент
  $fields = $doc->createElement('fields');
  $fields = $root->appendChild($fields);
  // данные element - не мой коммент
  $data_fields = $doc->createTextNode($result_export_array[$i]['fields']);
  $data_fields = $fields->appendChild($data_fields);
  ...
  //если картинка или файл товара, то файл кодируется в бэйс64 и записывается в ячейку xml
  $value_default = $result_export_array[$i]['value'].'photo_data'.base64_encode($contents);
  $value_convert = mb_convert_encoding($value_default, "UTF-8", "Windows-1251");
  $data_value = $doc->createTextNode($value_convert);
  ...
  //почетка, что файл экспорта создан
  $global->update($table = "`export_catalogue`", $fields = "`create` = '1'", $where = "`id` = '".$result_export_array[$i]['id']."'");
}
//файл xml_upload_catalogue.php, крон - 5 минут, копирует созданные xml файлы на фтп второго сайта
$result_export_array = $global->select_all($fields = "*", $table = "`export_catalogue`", $where = "`upload` = '0' ORDER BY `id` ASC");
 for ($i=0; $i<count($result_export_array); $i++){
  ... //тут идёт копирование файлов по фтп
  //пометка, что файл загружен на второй сайт
  $global->update($table = "`export_catalogue`", $fields = "`upload` = '1'", $where = "`id` = '$file_id'"); 
}
//второй сайт - интернет магазин
//xml_import_catalogue.php по крону, проверяется наличие xml файлов и поля импортируются в каталог
//цикл по списку файлов
foreach ($file_list as $key => $file_name) {
  //в таблицу import_catalogue записывается, какие файлы были импортированны 
  $next_file_array = $global->select_only($fields = "*", $table = "`import_catalogue`", $where = "`id` != '0' ORDER BY `id` DESC LIMIT 1");
  //причем имя файла(числовое) должно быть обязательно на 1 больше последнего записанного в таблице 
  $next_file = intval($next_file_array['id'] + 1).'.xml';
  ...
  //апдейт поля товара
  $value_convert = mb_convert_encoding($value_xml, "Windows-1251", "UTF-8");
  $global->update($table = "`$table_xml`", $fields = "`$fields_xml` = '".$global->sql_prepare($value_convert)."'", $where = "`id` = '$element_xml'");
  ...
  //помечаем, что файл импортирован и удаляем
  $global->insert($table = "`import_catalogue`", $fields = "`joined`", $values="'$joined'");
}
                                 
        
            Самый идеальный экспорт товаров из одного сайта в другой. Приведены отрывки кода из двух сайтов на каждом этапе экспорта
        
        
я вот только не понял, нафига гонять кодировки из UTF-8 в Windows-1251 и обратно?
На первом сайте при каждом редактировании товара ведётся своеобразная лог-таблица с полями "атрибут товара" "новое значение атрибута". Товар изменён - действия записались в таблицу. Потом скрипт по крону из этой таблицы создаёт xml файлы, каждый файл - поле товара с новым значением. Следующий скрипт по крону загружает новые файлы на ФТП второго сайта. На втором сайте скрипт просматривает все файлы и обновляет каталог товаров.
Нормальный экспорт или я придираюсь?
даже если алгоритм говно - поддерживать его намного проще, нежели годный алгоритм без комментариев.