gepo

Экспорт в YML Яндекс.Маркет для большого количества товаров

279 сообщений в этой теме

Интересное решение.

Но что-то я ну никак не пойму как использование обычного итератора позволит выгрузить сотни тысяч товаров? Фактически мы экономим только 1 цикл, так как вместо обхода всего результата в методе query, мы возвращаем итератор. После чего в модели или контроллере получаем нужные позиции через тот же mysql_fetch_assoc() :

public function current ( ) {

return mysql_fetch_assoc($this->resource);

}

0

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


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

Дело в том, что в классическом варианте работа происходит так:

  • Все товары загружаются в память
  • В памяти создается весь YML файл
  • Из памяти YML выводится в браузер

В случае с итератором:

  1. Товары по одному загружаются в память и предложение по ним записывается в файл на диске.
  2. После окончания работы в браузер выводится содержимое YML файла.

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

Когда товаров много, оригинальный скрипт падал как раз на том самом цикле загрузке всех товаров в память из БД.

1

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


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

Все, понял, спасибо :) Когда бегло смотрел код на fwrite не обратил внимания.

Также хочется отметить качество кода, оформленного про всем правилам phpdoc со всеми @param, @return, TODO итд, редко такой код видишь в опенкарт модулях.

0

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


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

1. Товары по одному загружаются в память и предложение по ним записывается в файл на диске.

12 тыс дисковых операций? Я бы кешировал и хотя бы по 50-100 шт выводил в файл одной записью. А то и больше.

0

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


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

12 тыс дисковых операций? Я бы кешировал и хотя бы по 50-100 шт выводил в файл одной записью. А то и больше.

Это вроде как должно делатся на уровне операционной системы. Количество дисковых операций должно быть меньше, чем вызовов fwrite.

0

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


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

12 тыс дисковых операций? Я бы кешировал и хотя бы по 50-100 шт выводил в файл одной записью. А то и больше.

Хотя скорее всего вы правы. На это есть открытый баг: https://bugs.php.net/bug.php?id=61168

Сейчас внесу исправления.

0

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


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

Хотя скорее всего вы правы. На это есть открытый баг: https://bugs.php.net/bug.php?id=61168

Сейчас внесу исправления.

Выложил новую версию, в ней вывод буферизируется.

0

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


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

А для 1.5.5.1 не планируется ? а то не идет он на новой версии, не появляется в Каналы Продвижения пунктик

0

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


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

А для 1.5.5.1 не планируется ? а то не идет он на новой версии, не появляется в Каналы Продвижения пунктик

интересно, не ставил еще. Смогу посмотреть через пару дней.

0

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


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

А для 1.5.5.1 не планируется ? а то не идет он на новой версии, не появляется в Каналы Продвижения пунктик

Скопировал недостающие файлы, теперь работает и в Oc 1.5.5 (проверил).

1

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


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

Добрый день как запускать его?

0

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


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

Определена кодировка: windows-1251 (строка 0, столбец 0)

Дата из файла: 2013-04-02 19:50 (строка 3, столбец 38)

Ошибка: Некорректная цена предложения: цена должна быть вещественным числом (строка 531, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 531, столбец 9)

Ошибка: Предложение отклонено: http://wwww.kz/noutbuk-acer......html (строка 531, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 29404, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 29668, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 29929, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 30247, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 30802, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31093, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31229, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31471, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31762, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 34575, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 34818, столбец 9)

(слишком много сообщений...)

Фатальная ошибка: Слишком много отклоненных предложений: 475 (строка 125368, столбец 10)

Фатальная ошибка: Фид отклонен

0

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


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

Определена кодировка: windows-1251 (строка 0, столбец 0)

Дата из файла: 2013-04-02 19:50 (строка 3, столбец 38)

Ошибка: Некорректная цена предложения: цена должна быть вещественным числом (строка 531, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 531, столбец 9)

Ошибка: Предложение отклонено: http://wwww.kz/noutbuk-acer......html (строка 531, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 29404, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 29668, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 29929, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 30247, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 30802, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31093, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31229, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31471, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 31762, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 34575, столбец 9)

Ошибка: Для предложения указана неизвестная категория: 60 (строка 34818, столбец 9)

(слишком много сообщений...)

Фатальная ошибка: Слишком много отклоненных предложений: 475 (строка 125368, столбец 10)

Фатальная ошибка: Фид отклонен

дайте ссылку на ваш сайт в личку.

0

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


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

Жду ответа заранее спасибо!

0

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


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

Жду ответа заранее спасибо!

ok, увидел на своей oc 1.5.5 ту же проблему - посмотрю.

1

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


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

В админке в System->Localization->Currencies нажмите Edit напротив вашей валюты и задайте значение в поле Decimal Places. Например - 2.

0

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


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

Определена кодировка: windows-1251 (строка 0, столбец 0)

Дата из файла: 2013-04-02 22:53 (строка 3, столбец 38)

Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: The input ended before all started tags were ended. Last tag started was 'offers' (строка 153012, столбец 1)

Теперь такая ошибка)

0

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


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

где меняется время обновления?

0

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


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

где меняется время обновления?

пока только в коде, в файле catalog/controller/feed/yandex_market.php, строка 26. Там сейчас есть 60*30 - это количество секунд равное 30-ти минатам. Поменяйте 30 на кол-во минут интервала обновления.

0

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


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

Здравствуйте, подскажите где что исправить, чтобы валюта была не рубль, а гривна.

Заранее спасибо.

0

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


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

Здравствуйте, подскажите где что исправить, чтобы валюта была не рубль, а гривна.

Заранее спасибо.

В настройках модуля. Если у вас там нельзя выбрать гривную, значит она не настроена в настройках магазина (Система->Локализация->Валюты)

0

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


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

Спасибо за ответ.

В настройках магазина валюта настроена, т.к. все цены в гривнах. А вот в модуле есть только рубль.

0

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


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

Спасибо за ответ.

В настройках магазина валюта настроена, т.к. все цены в гривнах. А вот в модуле есть только рубль.

У валюты код UAH прописан?

0

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


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

Да, прописан

0

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


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

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!


Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.


Войти

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

    • Автор: costas


      Просмотреть файл Страница контактов (Custom Contact Page)
      Страница контактов (The contact page)

      Версии и сборки с которыми совместим данный модуль:
      OpenCart версии 2.0.x - 2.3.x ocStore версии 2.1.x - 2.3.x Требования к серверу:
      PHP 5.3.x, 5.4.x, 5.5.x, 5.6.x, 7.x ionCube PHP Loader последней версии PHP OpenSSL support  
      Что бы проверить настройки Вашего сервера, скачайте архив system_test.zip
      распакуйте, прочитайте файл Readme_RU_UTF-8.txt и следуйте инструкциям.
       
      Как получить лицензию (лицензионный ключ) для дополнения (модуля) "Страница контактов"
      Условия использования лицензии - "на домен", это означает, что Вы можете использовать одну лицензию (ключ) для одного магазина на одном домене (один лицензионный ключ = один магазин = одно доменное имя).
      Для получения лицензии скачайте архив с модулем и напишите мне здесь в Личные сообщения свой email и доменное имя магазина на котором будет стоять модуль. Ключ лицензии будет выслан Вам на Ваш email
       
      Условия лицензии
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
      Вы имеете право ознакомиться с работой дополнений (модулей) на демонстрационных страницах этих дополнений (модулей). Все интересующие Вас вопросы, касающиеся работы дополнения (модуля) Вы можете задать автору продукта до его приобретения. Бесплатная техническая поддержка не оказывается пользователям, не купившим дополнение (модуль), получившим его каким-либо другим образом: скопировавшим, скачавшим, приобретшим вскладчину дополнения (модули) представленные в данном каталоге. Таким пользователям будет отказано в бесплатной технической поддержке без объяснения причин. Техническая поддержка оказывается за отдельную плату в случаях, если заявленная работа дополнения (модуля) невозможна по причине конфликтов с другими сторонними дополнениями (модулями), шаблон покупателя значительно отличается от базового шаблона системы ocStore / OpenCart, работа модуля нарушена после действий покупателя которые случились при редактировании файлов дополнения (модуля), пользователь хочет изменить или доработать приобретённое дополнение (модуль). Вы имеете право на бесплатную техническую поддержку продукта со стороны автора, за исключением случаев, описанных в пунктах 3 и 4 данного соглашения. Лицензионный ключ выдается на один домен (на один магазин). Выданный лицензионный ключ возврату или обмену не подлежит. Для использовании дополнения (модуля) на другом домене нужно совершить повторную покупку дополнения (модуля). Все запросы, в том числе и выдача лицензионных ключей, обрабатываются в течение 48 часов с момента поступления.  
      Возможности дополнения (модуля)
      Данный модуль (дополнение) заменяет стандартную страницу контактов (Связаться с нами) и позволяет делать произвольное оформление в виде набора карт-схем, где в качестве карты-схемы может выступать изображение или Yandex/Google карта (API Яндекс Карт, Google maps).
      Неограниченное количество карт-схем в виде Yandex/Google карты или обычного изображения; Создание Yandex карты на основе прямого геокодирования по адресу местоположения + текстовое описание; Создание Google карты на основе вставки кода карты + текстовое описание; Два текстовых блока перед и после карт-схем на базе WYSIWYG HTML редактора; Мини-галерея в виде трёх дополнительных изображений к карте-схеме с поддержкой Responsive jQuery Lightbox плагина. Поддержка HTML Title и H1; Поддержка мета-тега keywords и мета-тега description; Отдельно подключаемый файл CSS Поддержка мультимагазина Поддержка нескольких языков  
      Демонстрация
      Демонстрация дополнения (модуля).
      Страница контактов
      Доступ в панель администратора
      http://oc2.opencartlabs.ru/admin/
      Логин: demo
      Пароль: demo
      Автор costas Добавлен 05.03.2013 Категория Прочее Работает на OpenCart Системные требования Работает на ocStore Сайт разработчика Работает на OpenCart.Pro, ocShop Старая цена Метод активации Ioncube Loader  
    • Автор: costas
      Страница контактов (The contact page)

      Версии и сборки с которыми совместим данный модуль:
      OpenCart версии 2.0.x - 2.3.x ocStore версии 2.1.x - 2.3.x Требования к серверу:
      PHP 5.3.x, 5.4.x, 5.5.x, 5.6.x, 7.x ionCube PHP Loader последней версии PHP OpenSSL support  
      Что бы проверить настройки Вашего сервера, скачайте архив system_test.zip
      распакуйте, прочитайте файл Readme_RU_UTF-8.txt и следуйте инструкциям.
       
      Как получить лицензию (лицензионный ключ) для дополнения (модуля) "Страница контактов"
      Условия использования лицензии - "на домен", это означает, что Вы можете использовать одну лицензию (ключ) для одного магазина на одном домене (один лицензионный ключ = один магазин = одно доменное имя).
      Для получения лицензии скачайте архив с модулем и напишите мне здесь в Личные сообщения свой email и доменное имя магазина на котором будет стоять модуль. Ключ лицензии будет выслан Вам на Ваш email
       
      Условия лицензии
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
      Вы имеете право ознакомиться с работой дополнений (модулей) на демонстрационных страницах этих дополнений (модулей). Все интересующие Вас вопросы, касающиеся работы дополнения (модуля) Вы можете задать автору продукта до его приобретения. Бесплатная техническая поддержка не оказывается пользователям, не купившим дополнение (модуль), получившим его каким-либо другим образом: скопировавшим, скачавшим, приобретшим вскладчину дополнения (модули) представленные в данном каталоге. Таким пользователям будет отказано в бесплатной технической поддержке без объяснения причин. Техническая поддержка оказывается за отдельную плату в случаях, если заявленная работа дополнения (модуля) невозможна по причине конфликтов с другими сторонними дополнениями (модулями), шаблон покупателя значительно отличается от базового шаблона системы ocStore / OpenCart, работа модуля нарушена после действий покупателя которые случились при редактировании файлов дополнения (модуля), пользователь хочет изменить или доработать приобретённое дополнение (модуль). Вы имеете право на бесплатную техническую поддержку продукта со стороны автора, за исключением случаев, описанных в пунктах 3 и 4 данного соглашения. Лицензионный ключ выдается на один домен (на один магазин). Выданный лицензионный ключ возврату или обмену не подлежит. Для использовании дополнения (модуля) на другом домене нужно совершить повторную покупку дополнения (модуля). Все запросы, в том числе и выдача лицензионных ключей, обрабатываются в течение 48 часов с момента поступления.  
      Возможности дополнения (модуля)
      Данный модуль (дополнение) заменяет стандартную страницу контактов (Связаться с нами) и позволяет делать произвольное оформление в виде набора карт-схем, где в качестве карты-схемы может выступать изображение или Yandex/Google карта (API Яндекс Карт, Google maps).
      Неограниченное количество карт-схем в виде Yandex/Google карты или обычного изображения; Создание Yandex карты на основе прямого геокодирования по адресу местоположения + текстовое описание; Создание Google карты на основе вставки кода карты + текстовое описание; Два текстовых блока перед и после карт-схем на базе WYSIWYG HTML редактора; Мини-галерея в виде трёх дополнительных изображений к карте-схеме с поддержкой Responsive jQuery Lightbox плагина. Поддержка HTML Title и H1; Поддержка мета-тега keywords и мета-тега description; Отдельно подключаемый файл CSS Поддержка мультимагазина Поддержка нескольких языков  
      Демонстрация
      Демонстрация дополнения (модуля).
      Страница контактов
      Доступ в панель администратора
      http://oc2.opencartlabs.ru/admin/
      Логин: demo
      Пароль: demo
    • Автор: toporchillo


      Просмотреть файл YML экспорт в Яндекс.Маркет для OpenCart 2.x
      Перед Вами версия этого популярного модуля, но для дляOpenCart 2.x

      Модуль формирует YML-файл для экспорта каталога товаров на такие площадки как Яндекс.Маркет, torg.mail.ru, price.ru, poisk-podbor.ru, hotprice.ua, nadavi.net, vcene.ua, prom.ua и многие другие

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

      Демо на OcStore 2.1.0.2.1 (логин: demo пароль: demo)

      Важно:
      Генерация YML-файла через PHP-CLI не гарантируется, но почти всегда работает. Команда:
      <полный путь к php>/php <полный путь к корню сайта>/export/yandex_yml.php Если не работает, но нужно формировать через планировщик (CRON), используйте wget:
      wget -P <полный путь к корню сайта>/export/yandex_yml.xml http://<адрес сайта>/index.php?route=feed/yandex_yml Как быть, если вдруг что-то не работает:
      Не надо сразу создавать задачу в CRONе, не надо сразу отдавать ссылку на YML Яндексу
      1. Откройте ссылку на YML в браузере, щелкните правой кнопкой мышкой, выберете "исходный код".
      2. Вы увидите то, что сформировал скрипт. Возможно там будут сообщения об ошибках PHP. Текст ошибки прекрасно ищется в Гугле или в теме поддержки.
      3. Если вы не можете самостоятельно разобраться с ошибкой, то пришлите ссылку на экспорт. Сообщения без ссылки будут игнорироваться!
      4. Мне не достаточно прислать только результат работы Яндекс-валидатора.
       
       
       
       
      Автор toporchillo Добавлен 17.03.2017 Категория Обмен данными Работает на OpenCart Системные требования Работает на ocStore Сайт разработчика Работает на OpenCart.Pro, ocShop Старая цена Метод активации Ioncube Loader  
    • Автор: toporchillo
      Перед Вами версия этого популярного модуля, но для дляOpenCart 2.x

      Модуль формирует YML-файл для экспорта каталога товаров на такие площадки как Яндекс.Маркет, torg.mail.ru, price.ru, poisk-podbor.ru, hotprice.ua, nadavi.net, vcene.ua, prom.ua и многие другие

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

      Демо на OcStore 2.1.0.2.1 (логин: demo пароль: demo)

      Важно:
      Генерация YML-файла через PHP-CLI не гарантируется, но почти всегда работает. Команда:
      <полный путь к php>/php <полный путь к корню сайта>/export/yandex_yml.php Если не работает, но нужно формировать через планировщик (CRON), используйте wget:
      wget -P <полный путь к корню сайта>/export/yandex_yml.xml http://<адрес сайта>/index.php?route=feed/yandex_yml Как быть, если вдруг что-то не работает:
      Не надо сразу создавать задачу в CRONе, не надо сразу отдавать ссылку на YML Яндексу
      1. Откройте ссылку на YML в браузере, щелкните правой кнопкой мышкой, выберете "исходный код".
      2. Вы увидите то, что сформировал скрипт. Возможно там будут сообщения об ошибках PHP. Текст ошибки прекрасно ищется в Гугле или в теме поддержки.
      3. Если вы не можете самостоятельно разобраться с ошибкой, то пришлите ссылку на экспорт. Сообщения без ссылки будут игнорироваться!
      4. Мне не достаточно прислать только результат работы Яндекс-валидатора.
       
       
       
       
  • Недавно просматривали   0 пользователей

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