Магазин ВКонтакте

Автоэкспорт товаров на cron

Как работает автоэкспорт

По умолчанию в модуле автоэкспорт товаров в ВКонтакте работает с помощью агентов, в частности \VKApi\Market\Agent::exportData();. Агент по очереди проходит по каждой выгрузке, формирут список товаров для экспорта и выгружает. Последовательность действий такая же, как при ручном экспорте. После окончания экспорта начинается экспорт следующей активной выгрузки и так по кругу.

Большое количество агентов в битриксе может влиять на скорость выгрузки товаров. Также сама выгрузка может задерживать выполнение других агентов. В этом случае рациональнее будет перевести автоэкспорт на cron (фоновые задачи)

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

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

Информация по заказам приходит на сайт через уведомления со стороны вк, для этого cron не используется.

Для этого нужно сделать следующие действия:

  1. Отключить выполнение агента автоэкспорта
  2. Добавление cron задания

Отключение агента автоэкспорта

Переходим на страницу агентов Администрирование / Настройки / Настройки продукта / Агенты, используя фильтр находим нужный агент и деактивируем его

2020-12-30_18-27.png

Добавление cron задания

Путь до файла можно найти на странице настроек модуля Администрирование / VK / Магазин ВКонтакте / Настройки модуля

2020-12-30_18-30.png

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

Выполнение должно быть ежеминутным.

Если это делать через терминал, то задание можно добавить выполнив в терминале команду - crontab -e, от пользователя bitrix и добавив задание

* * * * * /usr/bin/php -f /var/www/html/bitrix/modules/vkapi.market/tools/cron.php

Также при стандартной установке правил через crontab -e запуск может не выполняться на сервера с окружением от битрикса. Часто задания по крону записываются в файлах из директории /etc/cron.d/.

В таком случае можно добавить запись так

* * * * *  bitrix test -f /home/bitrix/www/bitrix/modules/vkapi.market/tools/cron.php && /usr/bin/php -f /home/bitrix/www/bitrix/modules/vkapi.market/tools/cron.php  > 
/home/bitrix/www/vkapi.market.log 2>&1

Если не нужно записывать ошибки в импровизированный лог в виде файла /home/bitrix/www/vkapi.market.log, можно туда добавить запись такую

* * * * *  bitrix test -f /home/bitrix/www/bitrix/modules/vkapi.market/tools/cron.php && /usr/bin/php -f /home/bitrix/www/bitrix/modules/vkapi.market/tools/cron.php  > 
/dev/null 2>&1