- 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'");
}
                                     
        
            Самый идеальный экспорт товаров из одного сайта в другой. Приведены отрывки кода из двух сайтов на каждом этапе экспорта