Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль Модуль обмена для opencart v2.3 по стандарту CommerceML [Поддержка]


Recommended Posts

Странный у вас хостинг, стандартно 180 сек. Можно дробить на куски. Но на 3 части наверно мало будет, придется по-времени кромсать т.к. за 30 сек даже не знаю сколько картинок по FTP. Ошибка могла появиться если, например, на выгрузку один скрипт, на обновление другой, и отличаются настройки у них. Или как раз при добавлении новой категории товары уже не укладываются по времени.

Надіслати
Поділитися на інших сайтах

Кстати хочу сказать вот что, модуль 1.6.4.7 и все предыдущие могут обрабатывать одновременно только один запрос, при выгрузки каталога на сайт нельзя чтобы в это время происходил обмен заказами. Проблема в том что папка загрузки одна и очистка перед загрузкой удалить загружаемые файлы, которые собираются (резаные) файл получается неполноценным и получаем ошибку распаковки. 

Проблему в новой версии я эту решил, там создаются временные папки для каждой сессии которые затем удаляются.

  • +1 1
Надіслати
Поділитися на інших сайтах

10 часов назад, jnxjn сказал:

Хостер говорит, что у них 30 секунд и это не обсуждается :roll: 

Может обмен с сайтом разбить на 3 этапа? Сначала 1/3 категорий, потом 2/3 и т.д.?

А если выгружать только изменения, то при 10к товаров обмен проходит не более 5 мин.

Но если например переоценить 5000 товаров то выгрузка будет большой...

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

Даже можно 1С или какой-там софтине ответить типа все успешно, не удалять файл во временной папке и удалить его как только все товары будут в ней обработаны.

Змінено користувачем Kirillove
Надіслати
Поділитися на інших сайтах

В 17.07.2019 в 22:50, jnxjn сказал:

Коллеги, пока вы поднимаете важные вопросы, у меня возникла проблема. Настроили связь Opencart и 1С,выгрузили товары - всё гуд. Но, возникла проблема с обновлением товаров.

В 1С добавили новую категорию и залили в неё товары, подождали синхронизации... категории синхронизировались, информация о товарах тоже, но! Не синхронизировались картинки. Все новые товары без картинок.

Попробовали сделать выгрузку на локалку - к товарам прописаны картинки, картинки в файлах импорта есть. Проверили FTP - на FTP новых изображений нет.

Вопрос: Куда по пути, теряются изображения и почему они не доходят до FTP? 

Буду рад помощи.

выгружается архивом ?

проверить наличие папки "import_files" в /image а также права на запись web сервером в нее. Проверить при создании папки "import_files" есть ли права на создании в ней файлов и папок для web сервера

Надіслати
Поділитися на інших сайтах

9 часов назад, jnxjn сказал:

Хостер говорит, что у них 30 секунд и это не обсуждается :roll: 

Может обмен с сайтом разбить на 3 этапа? Сначала 1/3 категорий, потом 2/3 и т.д.?

Вообще рекомендуется для больших магазинов использовать хостинг поддерживающий Битрикс, там как раз оптимальные настройки, но если неохота перепрыгивать на другой хостинг.

Можно настроить несколько обменов по каталогам, но опять таки чтобы они вместе никогда не стартовали уже надо в 1С планировщик настраивать, тогда за одну порцию товаров будет меньше выгружаться.

Надіслати
Поділитися на інших сайтах

57 минут назад, Kirillove сказал:

Кстати хочу сказать вот что, модуль 1.6.4.7 и все предыдущие могут обрабатывать одновременно только один запрос, при выгрузки каталога на сайт нельзя чтобы в это время происходил обмен заказами. Проблема в том что папка загрузки одна и очистка перед загрузкой удалить загружаемые файлы, которые собираются (резаные) файл получается неполноценным и получаем ошибку распаковки. 

Проблему в новой версии я эту решил, там создаются временные папки для каждой сессии которые затем удаляются.

О, а у нас как раз 1.6.3.8. Побежал обновлять модуль!

53 минуты назад, Kirillove сказал:

А если выгружать только изменения, то при 10к товаров обмен проходит не более 5 мин.

Но если например переоценить 5000 товаров то выгрузка будет большой...

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

Даже можно 1С или какой-там софтине ответить типа все успешно, не удалять файл во временной папке и удалить его как только все товары будут в ней обработаны.

А сейчас выгружаются только изменения. Товаров не много, общий вес всех товаров с картинками - 677мб

47 минут назад, Kirillove сказал:

выгружается архивом ?

проверить наличие папки "import_files" в /image а также права на запись web сервером в нее. Проверить при создании папки "import_files" есть ли права на создании в ней файлов и папок для web сервера

Локально выгружаются. Права на папку 755

32 минуты назад, Kirillove сказал:

Вообще рекомендуется для больших магазинов использовать хостинг поддерживающий Битрикс, там как раз оптимальные настройки, но если неохота перепрыгивать на другой хостинг.

Можно настроить несколько обменов по каталогам, но опять таки чтобы они вместе никогда не стартовали уже надо в 1С планировщик настраивать, тогда за одну порцию товаров будет меньше выгружаться.

Эх... так не хочется его менять. Но, за совет спасибо. Если что - будем целить в хостинг для битрикса

Надіслати
Поділитися на інших сайтах


5 часов назад, Kirillove сказал:

А если выгружать только изменения, то при 10к товаров обмен проходит не более 5 мин.

Но если например переоценить 5000 товаров то выгрузка будет большой...

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

Даже можно 1С или какой-там софтине ответить типа все успешно, не удалять файл во временной папке и удалить его как только все товары будут в ней обработаны.

Про это не надо даже думать. VPS самый простой стоит 500 р , там ставь любые тайминги. У кого нет 500 р в месяц, значит не судьба, это не пользователи модуля. 

Надіслати
Поділитися на інших сайтах


7 часов назад, jnxjn сказал:

О, а у нас как раз 1.6.3.8. Побежал обновлять модуль!

Новая версия будет 2.0 все версии которые выходили этого не поддерживали, так что лучше сидите на той что работает.

Надіслати
Поділитися на інших сайтах

7 часов назад, jnxjn сказал:

Локально выгружаются. Права на папку 755

То есть 1С сервер и веб сервер в одной локальной сети у Вас стоят?

 

Я имел ввиду вот эту настройку:

image.png.256cba5a867b463556f2bf0ca224b7a5.png

Надіслати
Поділитися на інших сайтах

3 часа назад, Kirillove сказал:

То есть 1С сервер и веб сервер в одной локальной сети у Вас стоят?

 

Я имел ввиду вот эту настройку:

image.png.256cba5a867b463556f2bf0ca224b7a5.png

Нет, у нас 1с на отдельной машине. Я переключаю чек бокс и вижу, что выгрузка в локальную папку идёт отлично.

Настройку попробую.

Надіслати
Поділитися на інших сайтах


6 часов назад, rassigor сказал:

Про это не надо даже думать. VPS самый простой стоит 500 р , там ставь любые тайминги. У кого нет 500 р в месяц, значит не судьба, это не пользователи модуля. 

Вопрос не в 500 рублях, вопрос в минимизации издержек. Устанавливаали, настраивали - кучу времени. Теперь ещё и переносом заниматься...

Надіслати
Поділитися на інших сайтах


Что бы вы  думали... перенесли сайт на нормальный хостинг. Картинки всё равно не грузятся! 

Очистил кеш, очистил связи с ТС.

Поставил "полная выгрузка", создалось штук 20 папок с картинками. На этом всё... 

Не могу понять, что я делаю не так? В логах всё чудесно, ни единой ошибки

 

... Запустил ещё раз. Появилось больше папок... Может, так победимъ...

Змінено користувачем jnxjn
Надіслати
Поділитися на інших сайтах


18 часов назад, jnxjn сказал:

Что бы вы  думали... перенесли сайт на нормальный хостинг. Картинки всё равно не грузятся! 

Очистил кеш, очистил связи с ТС.

Поставил "полная выгрузка", создалось штук 20 папок с картинками. На этом всё... 

Не могу понять, что я делаю не так? В логах всё чудесно, ни единой ошибки

 

... Запустил ещё раз. Появилось больше папок... Может, так победимъ...

то есть в логе видно что распаковывается или копируется картинка но в папке назначения ее нет?

Надіслати
Поділитися на інших сайтах

В 19.07.2019 в 06:53, jnxjn сказал:

Вопрос не в 500 рублях, вопрос в минимизации издержек. Устанавливаали, настраивали - кучу времени. Теперь ещё и переносом заниматься...

Могу хостинг vps подсказать,  бесплатный перенос и настройка.  Я когда то тоже ерундой занимался и 100 р экономил,  не привело не к чему хорошему

Змінено користувачем rassigor
Надіслати
Поділитися на інших сайтах


5 часов назад, Kirillove сказал:

то есть в логе видно что распаковывается или копируется картинка но в папке назначения ее нет?

:-? в логах картинки есть, в папке назначения (теперь) тоже есть. Однако, к товару картинка не прикрепляется :-? 

Удалил все товары, запустил заново синхронизацию - картинки качает, товары не заливает :? в логах ошибок не вижу, xml файлы в порядке

 

Короче, какая-то боль. Не получается победить

Змінено користувачем jnxjn
Надіслати
Поділитися на інших сайтах


17 часов назад, jnxjn сказал:

:-? в логах картинки есть, в папке назначения (теперь) тоже есть. Однако, к товару картинка не прикрепляется :-? 

Удалил все товары, запустил заново синхронизацию - картинки качает, товары не заливает :? в логах ошибок не вижу, xml файлы в порядке

 

Короче, какая-то боль. Не получается победить

Отправьте логи на почту e[email protected]
и в письме укажите несколько товаров которые без картинки без картинки на сайте.

Надіслати
Поділитися на інших сайтах

@Kirillove подскажите пожалуйста что изменить чтобы картинки обновлялись на сайте. Версия модуля последняя.

 

Первая картинка загружается нормально. Но если картинку в 1С поменять на другую то на сайте она не обновляется. И даже если на сайте удалить картинку, все равно после выгрузки появляется старая.

Змінено користувачем Scorp
Надіслати
Поділитися на інших сайтах


21 час назад, Kirillove сказал:

Отправьте логи на почту e[email protected]
и в письме укажите несколько товаров которые без картинки без картинки на сайте.

Где хранятся логи модуля? Я использую логи сервера

Надіслати
Поділитися на інших сайтах


2 часа назад, jnxjn сказал:

Где хранятся логи модуля? Я использую логи сервера

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

2019-07-03 6:39:25 - 2.507 Mb | 1929 | Распаковка архива: = /tmp/phpUgYNo4
2019-07-03 6:39:25 - 2.510 Mb | 1884 | Распаковка XML,  name = import.xml
2019-07-03 6:39:25 - [!] ВНИМАНИЕ Файл 'import.xml' не является XML файлом и не будет записан!
2019-07-03 6:39:25 - 11.037 Mb | 1918 | Завершена распаковка XML
2019-07-03 6:39:25 - 2.510 Mb | 1884 | Распаковка XML,  name = offers.xml
2019-07-03 6:39:25 - 4.654 Mb | 1918 | Завершена распаковка XML
2019-07-03 6:39:25 - 2.509 Mb | 1959 | Завершена распаковка архива

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

2019-07-03 6:39:25 - 2.509 Mb | 2062 | Обрабатывается файл основной: offers.xml
2019-07-03 6:39:25 - [i] Ручная загрузка данных.
2019-07-03 6:39:25 - 3.794 Mb | 0441 | SELECT `language_id` FROM `oc_language` WHERE `code` = 'en'
2019-07-03 6:39:25 - 3.793 Mb | 0443 | Определен язык language_id: 1
2019-07-03 6:39:25 - 3.793 Mb | 6815 | >>>>>>>>>>>>>>>>>>>> НАЧАЛО ЗАГРУЗКИ ДАННЫХ <<<<<<<<<<<<<<<<<<<<
2019-07-03 6:39:25 - 3.793 Mb | 6816 | Доступно памяти: 11.242 Mb
2019-07-03 6:39:25 - 3.794 Mb | 6827 | Файл: offers.xml
2019-07-03 6:39:25 - 3.795 Mb | 0153 | Версия XML: 2.05
2019-07-03 6:39:25 - 3.795 Mb | 6866 | >>>>>>>>>>>>>>>>>>>> ЗАГРУЗКА ПАКЕТА ПРЕДЛОЖЕНИЙ <<<<<<<<<<<<<<<<<<<<
2019-07-03 6:39:25 - 3.797 Mb | 5666 | [!] Загрузка полная...
....

обновляются цены и остатки, и на этом все....

Что же не так с файлом import.xml? либо распаковка неудачно завершилась, то есть обрезан архив либо куски не все закачаны.

Теперь надо включить лог веб сервера можно только error, и посмотреть что там.

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

 

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

 

Прерывание загрузки часто бывает из-за нестабильного интернета., можно во время обмена наблюдать за трафиком и параллельно запустить пинг до хостера с размером пакета 200 или более

 

Змінено користувачем Kirillove
Надіслати
Поділитися на інших сайтах

4 часа назад, herminator сказал:

@Kirillove , Виталий, вы читаете только последние сообщения или все?

По возможности все, но сначала те которые последние а потом уже назад листаю, так как возможно уже неактуален ответ, поэтому ко всем обращаюсь у кого еще есть вопросы просто напишите сообщение с ссылкой на Ваш вопрос.

Надіслати
Поділитися на інших сайтах

@Kirillove , я присылал вопрос в личку. Вы работаете над 2 версией? Актуальная 1.6.4.7 будет исправляться?

Надіслати
Поділитися на інших сайтах


Исправление в 1.6.4.7 (SEO генерация по кнопке)

файл /admin/model/extension/exchange1c.php

Данная статья будет продублирована в разделе исправление ошибок версии 1.6.4.7 на офсайте

Спойлер

	/**
	 * ver 5
	 * update 2019-07-24
	 * Генерит SEO переменные шаблона для товара
	 */
	public function seoGenerate() {

        $now = date('Y-m-d H:i:s');
		$result = array(
			'error'			=> '',
			'product'		=> 0,
			'category'		=> 0,
			'manufacturer'	=> 0
		);

		if (empty($this->TAB_FIELDS)) {
			$this->TAB_FIELDS = $this->defineTableFields();
		}

		$language_id = $this->getLanguageId($this->config->get('config_language'));

		if ($this->config->get('exchange1c_seo_product_mode') != 'disable') {
			// Выбрать все товары, нужны поля:
			// name, sku, model, manufacturer_id, description, product_id, category_id
			$no_update_description = array();

			if (isset($this->TAB_FIELDS['product_description']['meta_h1'])) {
				$sql = "SELECT
					p.product_id,
					p.sku,
					p.model,
					p.manufacturer_id,
					pd.name,
					pd.tag,
					pd.meta_title,
					pd.meta_description,
					pd.meta_keyword,
					pd.meta_h1
					FROM `" . DB_PREFIX . "product` p
					LEFT JOIN `" . DB_PREFIX . "product_description` pd ON (p.product_id = pd.product_id)
					WHERE pd.language_id = " . $language_id;
			} else {
				$sql = "SELECT
					p.product_id,
					p.sku,
					p.model,
					p.manufacturer_id,
					pd.name,
					pd.tag,
					pd.meta_title,
					pd.meta_description,
					pd.meta_keyword
					FROM `" . DB_PREFIX . "product` p
					LEFT JOIN `" . DB_PREFIX . "product_description` pd ON (p.product_id = pd.product_id)
					WHERE pd.language_id = " . $language_id;
				array_push($no_update_description, 'meta_h1');
			}

			$query = $this->query($sql);
			if ($query->num_rows) {
				foreach ($query->rows as $data) {

					$this->log($data, 2);
					$result['product']++;
	 				$data_old = $data;
	 				if ($this->config->get('exchange1c_seo_product_mode') != 'disable')
						$update = $this->seoGenerateProduct($data['product_id'], $data);
						$this->log($update, 2);

					if (!$update) {
						$this->log("Нечего обновлять!", 2);
						continue;
					}

					// Сравнение
					$update_fields = $this->compareArraysData($update, $data_old);

					// Если есть что обновлять
					if ($update_fields) {
						$sql_set = $this->prepareQuery($update_fields, 'set');
						$this->query(
							"UPDATE `" . DB_PREFIX . "product_description`
							SET " . $sql_set . "
							WHERE `product_id` = " . (int)$data['product_id'] . "
							AND `language_id` = " . $language_id
						);
					}
				}
			}
		}

		// Категории

		if ($this->config->get('exchange1c_seo_category_mode') != 'disable') {
			// Выбрать все категории, нужны поля:
			// name, sku, model, manufacturer_id, description, product_id, category_id
			$no_update_description = array();
			if (isset($this->TAB_FIELDS['category_description']['meta_h1'])) {
				$sql = "SELECT c.category_id, cd.name, cd.meta_title, cd.meta_description, cd.meta_keyword, cd.meta_h1
					FROM `" . DB_PREFIX . "category` c
					LEFT JOIN `" . DB_PREFIX . "category_description` cd ON (c.category_id = cd.category_id)
					WHERE cd.language_id = " . $language_id;
			} else {
				$sql = "SELECT c.category_id, cd.name, cd.meta_title, cd.meta_description, cd.meta_keyword
					FROM `" . DB_PREFIX . "category` c
					LEFT JOIN `" . DB_PREFIX . "category_description` cd
					ON (c.category_id = cd.category_id)
					WHERE cd.language_id = " . $language_id;
				array_push($no_update_description, 'meta_h1');
			}

			$query = $this->query($sql);
			if ($query->num_rows) {
				foreach ($query->rows as $data) {

					$result['category']++;
					if ($this->config->get('exchange1c_seo_category_mode') != 'disable')
						$this->seoGenerateCategory($data['category_id'], $data);

					// Сравнение
					$update_fields = $this->compareArraysData($data_old, $data, $no_update_description);

					// Если есть что обновлять
					if ($update_fields) {
						$sql_set = $this->prepareQuery($update_fields, 'set');
						$this->query(
							"UPDATE `" . DB_PREFIX . "category_description`
							SET " . $sql_set . "
							WHERE `category_id` = " . (int)$data['category_id'] . "
							AND `language_id` = " . $language_id
						);
						$this->query(
							"UPDATE `" . DB_PREFIX . "category`
							SET `date_modified` = '" . $now . "'
							WHERE `category_id` = " . (int)$data['category_id']
						);
					}
				}
			}
		}

		// Производители

		if ($this->config->get('exchange1c_seo_manufacturer_mode') != 'disable') {
			if (isset($this->TAB_FIELDS['manufacturer_description'])) {
				// Выбрать все категории, нужны поля:
				// name, sku, model, manufacturer_id, description, product_id, category_id
				$no_update_description = array();
				if (isset($this->TAB_FIELDS['manufacturer_description']['meta_h1'])) {
					$sql = "SELECT m.manufacturer_id, md.name, md.meta_title, md.meta_description, md.meta_keyword, md.meta_h1
						FROM `" . DB_PREFIX . "manufacturer` m
						LEFT JOIN `" . DB_PREFIX . "manufacturer_description` md
						ON (m.manufacturer_id = md.manufacturer_id)
						WHERE md.language_id = " . $language_id;
				} else {
					$sql = "SELECT m.manufacturer_id, md.name, md.meta_title, md.meta_description, md.meta_keyword
						FROM `" . DB_PREFIX . "manufacturer` m
						LEFT JOIN `" . DB_PREFIX . "manufacturer_description` md ON (m.manufacturer_id = md.manufacturer_id)
						WHERE md.language_id = " . $language_id;
					array_push($no_update_description, 'meta_h1');
				}

				$query = $this->query($sql);
				if ($query->num_rows) {
					foreach ($query->rows as $data) {

						$result['manufacturer']++;

						$data_old = $data;

						if ($this->config->get('exchange1c_seo_manufacturer_mode') != 'disable')
							$update = $this->seoGenerateManufacturer($data['manufacturer_id'], $data);

						if (!$update)
							continue;

						// Сравнение
						$update_fields = $this->compareArraysData($data_old, $data, $no_update_description);

						// Если есть что обновлять
						if ($update_fields) {
							$sql_set = $this->prepareQuery($update_fields, 'set');
							$this->query(
								"UPDATE `" . DB_PREFIX . "category_description` SET " . $sql_set . "
								WHERE `category_id` = " . (int)$data['category_id'] . "
								AND `language_id` = " . $language_id
							);
							$this->query(
								"UPDATE `" . DB_PREFIX . "category`
								SET `date_modified` = '" . $now . "'
								WHERE `category_id` = " . (int)$data['category_id']
							);
						}
					}
				}

			}
		}
		return $result;

	} // seoGenerate()

 

 

Надіслати
Поділитися на інших сайтах

У кого возникают ошибки в логах из-за ограничения хостером менять параметры PHP из кода:

script tried to disable max_execution_time by setting it to zero which is not allowed (file '.../admin/controller/module/exchange1c.php', line 2259)
script tried to disable memory_limit by setting it to a negative value -1 bytes which is not allowed (file '.../admin/controller/module/exchange1c.php', line 2260)
script tried to increase max_execution_time to 200 seconds which is above the allowed value (file '.../admin/controller/module/exchange1c.php', line 2290)

в файле где ошибка есть функция public function modeFile()

в ней отключите строки:

		//set_time_limit(0);
		//ini_set('memory_limit', '-1');
...
		//set_time_limit($time_limit);
		//ini_set('memory_limit', $memory_limit);

 

Надіслати
Поділитися на інших сайтах

  • dinox changed the title to Модуль обмена для opencart v2.3 с учетной системой по стандарту CommerceML [Поддержка]

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.