Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Импорт данных по cron. xmlImporter

Автор RodogorРаздел Custom макросы

Ответов: 9
Просмотров: 3920
Последний ответ 18 Марта 2013, 13:56:53
от Rodogor
Проблема с CRON

Автор ByteРаздел Разработка модулей

Ответов: 12
Просмотров: 3826
Последний ответ 28 Сентября 2014, 00:24:27
от Byte

0 Пользователей и 1 Гость просматривают эту тему.

*

albion

  • ***
  • 109
  • +3/-0
    • Просмотр профиля
    • Веб-Админ
cron
« : 27 Мая 2011, 14:26:14 »
Необходимо сделать автоматическую смену курсов валют через cron. Каким образом это делается?

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:cron
« Ответ #1 : 29 Мая 2011, 10:59:54 »
в cron прописывается событие (фактически просто функция в которой вы и делаете смену валют). По поводу обращения с кроном он просто вызывает определенные функции, я обычно смотрел примеры этих функций и писал подобие.

Посмотреть примеры можно введя в адресную строку http://ваш_сайт/cron.php

пример с одной системы (у вас функции могут отличаться, зависит от версии и делали ли чего уже с cron)
Цитировать
This file should be executed by cron only. Please, run it via HTTP for test only.
Notice: maximum priority level can accept values between "1" and "10", where "1" is maximum priority.

Executed event handlers:
   1. config::runGarbageCollector (umiEventPoint), priority = 5, not critial
   2. news::feedsImportListener (umiEventPoint), priority = 5, not critial
   3. eshop::chronopay_validateAllTransactions (umiEventPoint), priority = 5, not critial

потом ищем саму функцию. Например, feedsImportListener.
- Функция вызывается в файле /classes/modules/news/events.php строчкой
<?php
$onCronNewsRead = new umiEventListener("cron", "news", "feedsImportListener");
?>
немного пояснения синтаксиса:
$Какая-нибудь_переменная = new umiEventListener("Название_события_в_нашем_случае_это_cron", "название_модуля", "название_функции")

- Сама функция лежит тут /classes/modules/news/__rss_import.php

Много интересного про события можно почитать тут Статьи на wiki про events

то есть мы пишем функцию в файле  __custom.php
и потом прописываем его в файле custom_events.php

Подводные камни:
1. раньше (по моему у версии 2.8.2.)  была такая ошибка, что одна из стандартных функций которые выполнял cron, заканчивалась exit(); и соответственно cron сворачивал работу, по моему это было в функции подписки (где-то в папке dispatches), так что если у вас что-то не работает проверти эту функцию.
2. еще, если у вас очень долгая функция (то есть выполняется долго), то она просто может не успевать выполниться и это никак не отобразиться, так что проверте свою функцию до того как ставить её в cron и потом удивляться почему не произошли изменения (у меня был пример обработки порядка 8000 объектов и скрипт не успевал обработать их всех, в итоге увеличивали время работы для этого скрипта, хотя можно просто разбивать скрипт на части, но это уже отдельный вопрос)

P.S.по моему сама функция обновления курса валют уже есть в umi, по крайне мере мне казалось что они уже такое реализовывали, так что может и каждодневное обновление они уже делали))

*

albion

  • ***
  • 109
  • +3/-0
    • Просмотр профиля
    • Веб-Админ
Re:cron
« Ответ #2 : 29 Мая 2011, 16:44:40 »
Да, в UMI это реализовано. Просто необходимо засунуть cron.php в настройках крона хостинга.

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:cron
« Ответ #3 : 29 Мая 2011, 19:01:35 »
оу) а я оказывается не то вам рассказывал), по поводу cron на хостинге у каждого хостинга по своему, иногда прямо в личном кабинете, просто указываете периодическое выполнение http://ваш_сайт/cron.php

или вас интересует возможность создания нескольких cron в umi?

*

albion

  • ***
  • 109
  • +3/-0
    • Просмотр профиля
    • Веб-Админ
Re:cron
« Ответ #4 : 30 Мая 2011, 06:46:04 »
С кроном первый раз работал. И подумал, может файл cron.php запускается с какими то параметрами, т.е. ?update (типа этого). Тем более меня смутило:

Executed event handlers:
   1. config::runGarbageCollector (umiEventPoint), priority = 5, not critial
   2. news::feedsImportListener (umiEventPoint), priority = 5, not critial
   3. eshop::chronopay_validateAllTransactions (umiEventPoint), priority = 5, not critial

И да, меня просто интересовало как запустить крон, и есть ли какие заморочки с этим.

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:cron
« Ответ #5 : 30 Мая 2011, 08:24:19 »
то есть, вам хватило той информации что я написал выше?

*

albion

  • ***
  • 109
  • +3/-0
    • Просмотр профиля
    • Веб-Админ
Re:cron
« Ответ #6 : 30 Мая 2011, 14:28:54 »
Если честно, то раньше разобрался. А вам спасибо за консультацию.