Как сделать импорт в JBZoo по расписанию (cron'у) ?

... или запуск JBZoo из командной строки

10.0/10 оценка (3 голосов)

Краткий обзор расширения JBZoo-CLI, которое поможет запускать импорт по крону и другие произвольные действия по расписанию и командной строки.

Как сделать импорт в JBZoo по расписанию (cron'у) ?

Недавно мы анонсировали небольшой микро-фреймворк для JBZoo на нашем форуме. Решение сделано с помощью популярных PHP библиотек и оформлено по последнему писку моды (github, composer и т. д.). Пригодится как готовый способ запуска импорта через cron или разработки собственных консольных комманд для Joomla.

Распространяется под лицензией MIT, поэтому доступно любому желающему. Думаю, будет полезно рассказать о нем в нашем блоге.

И так…

Что такое JBZoo-CLI и с чем его едят?

Это дополнение, для сайта Joomla с JBZoo, которое мы собрали с помощью популярного компонента Symfony/Console + наработок с нашего форума. Дополнение сделано в виде законченного решения, которое можно развивать своими скриптами.

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

Особенно это будет полезно PHP программистам, которые хотят выполнять какие-то вещи с ZOO из консоли, но им жутко не хочется разбираться в нюансах запуска Joomla+ZOO из командной строки

Что умеет JBZoo-Cli?

  • Импорт материалов — ./cli/jbzoo/bin/jbzoo import:items -profile
  • Переиндексация базы данных — ./cli/jbzoo/bin/jbzoo tools:reindex
  • Бесконечное количество профилей для импорта (см папку./configs/ и ключ -profile)
  • Импортированный файл будет перенесен в отдельную папку.
  • Есть глобальные настройки и масса настроек, например для импорта.
  • Настройки консольного импорта полностью повторяют панель управления в браузере.
  • Режим отладки и профилирование включается через ключ «-v» (verbose)
  • Для длинных процессов есть консольный прогресс бар
  • Можно легко добавить свою консольную команду, просто кинуть свой файл (спрашивайте на форуме).
  • Работает в Linux и Windows.

Мелочь, а приятно…

  • Можно устанавливать и обновлять через composer
  • Лицензия MIT — т. е. бесплатно и доступно всем
  • Репозиторий на GitHub.com

JBZoo Cli for Cron

Как установить?

Желательно (но совсем не обязательно) через composer.

# Переходим в корень сайта
cd <Joomla root path>
# Запускаем установку самой свежей версии - 1.x-dev
composer create-project jbzoo/cck-cli:1.x-dev ./cli/jbzoo/

Если для вас это сложно, то просто скачайте свежий архив jbzoo-cli-pack.zip И распакуйте сюда <корень_сайта>/cli/jbzoo, так чтобы был доступ к файлу <сайт>/cli/jbzoo/bin/jbzoo(.bat) После этого вы сможете запускать файлы внутри bin из консоли. Соответственно, для разных ОС — разные исполняемые файлы.

Внимание! Файлы внутри bin должны иметь права на выполнение.

Как добавить импорт в cron?

Через панель управления хостера, либо зайдите на сервер по ssh и далее «crontab -e» Добавьте задачу, один из вариантов ниже (этот пример выполнится раз в час).

Как именно запускать php и sh-скрипты в консоли лучше узнать у вашего хостера!

Вот несколько наиболее популярных примеров.

0 * * * * <ПОЛНЫЙ_ПУТЬ_ДО_КОРНЯ_САЙТА>/cli/jbzoo/bin/jbzoo import:items --profile=myprofile >> <ПУТЬ_ДО_ЛОГОВ>/cron.log 2>&1
0 * * * * php <ПОЛНЫЙ_ПУТЬ_ДО_КОРНЯ_САЙТА>/cli/jbzoo/vendor/jbzoo/console/bin/jbzoo import:items --profile=myprofile >> <ПУТЬ_ДО_ЛОГОВ>/cron.log 2>&1
0 * * * * /usr/local/bin/php <ПОЛНЫЙ_ПУТЬ_ДО_КОРНЯ_САЙТА>/cli/jbzoo/vendor/jbzoo/console/bin/jbzoo import:items --profile=myprofile >> <ПУТЬ_ДО_ЛОГОВ>/cron.log 2>&1

И еще…

  • Минимальная версия — JBZoo 2.2.0 RC2 и Zoo 3.3.x+
  • Мы не проверяли JBZoo-Cli на Joomla 2.5.x, т.к она очень и очень старая. Не поддерживается никем.
    Теоретически должно работать.
  • Полностью тестировали на Joomla: 3.4.8 | JBZoo: 2.2.5 Pro | Zoo: 3.3.15
  • Кстати, JBZoo-Cli — это часть нового JBZoo 3.0 Такие дела…

P.S Ставьте звезды на гитхабе и подписывайте на изменения репы или файла в маркете. Это даст понять на сколько оболочка востребована и что она нуждается в развитии.

Вопросы? =)

10.0 1396
  • Дмитрий
    Дмитрий
    01 Март 2016 at 21:26
     ↑  +1  ↓  Ответить

    Я даж не понимаю для чего это, но звучит круто)

  • Алексей
    20 Май 2016 at 11:53
     ↑  +2  ↓  Ответить

    Насколько я понял, можно экспортировать из 1С файл, например price.csv, по ftp - в определенную папку, и с помощью этого механизма настроить импорт товаров на сайт в определенное время.

    • SmetDenis
      SmetDenis (admin)
      20 Май 2016 at 11:58
       ↑  +2  ↓  Ответить

      Да, все верно. Так обычно и работает синхронизация с 1С у большинства сайтов.

      Если есть знания PHP, то расширение можно использовать для любых периодичных действий на сайте.

  • Алексей
    Алексей
    21 Июнь 2016 at 21:41
     ↑  0  ↓  Ответить

    Недавно сделал импорт из 1С прямо в базу сайта, можно ли как то удаленно с помощью cli переиндексацию запустить?

    • SmetDenis
      SmetDenis (admin)
      22 Июнь 2016 at 04:04
       ↑  0  ↓  Ответить

      Обычно консольные команды не предназначены для запуска извне. Это не безопасно.

      Но если очень хочется, то посмотрите http://php.net/manual/ru/function.system.php

Оставить комментарий