UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: albion от 27 Мая 2011, 14:26:14

Название: cron
Отправлено: albion от 27 Мая 2011, 14:26:14
Необходимо сделать автоматическую смену курсов валют через cron. Каким образом это делается?
Название: Re:cron
Отправлено: admin от 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 (http://wiki.umisoft.ru/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%3ASearch&search=umiEventListener&go=%D0%9F%D0%B5%D1%80%D0%B5%D0%B9%D1%82%D0%B8)

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

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

P.S.по моему сама функция обновления курса валют уже есть в umi, по крайне мере мне казалось что они уже такое реализовывали, так что может и каждодневное обновление они уже делали))
Название: Re:cron
Отправлено: albion от 29 Мая 2011, 16:44:40
Да, в UMI это реализовано. Просто необходимо засунуть cron.php в настройках крона хостинга.
Название: Re:cron
Отправлено: admin от 29 Мая 2011, 19:01:35
оу) а я оказывается не то вам рассказывал), по поводу cron на хостинге у каждого хостинга по своему, иногда прямо в личном кабинете, просто указываете периодическое выполнение http://ваш_сайт/cron.php

или вас интересует возможность создания нескольких cron в umi?
Название: Re:cron
Отправлено: albion от 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

И да, меня просто интересовало как запустить крон, и есть ли какие заморочки с этим.
Название: Re:cron
Отправлено: admin от 30 Мая 2011, 08:24:19
то есть, вам хватило той информации что я написал выше?
Название: Re:cron
Отправлено: albion от 30 Мая 2011, 14:28:54
Если честно, то раньше разобрался. А вам спасибо за консультацию.