[Решено] Rules, cron

Главные вкладки

Аватар пользователя siriusal siriusal 18 марта 2012 в 8:46

Всем доброго времени суток. У меня возникла проблема. Никак не соображу как сделать, чтобы поинты юзера каждый день уменьшались на некоторое количество. Например как в jino.ru. Делаю как обычно: Rules->создать новое правило->выполнение регулярных задач cron-> Добавить action->grant point to a user, открывается следующий лист... и вот тут кажется где-то ошибаюсь. Что где прописывать, особенно в графе "Действия" не пойму. Если не сложно, подскажите пожалуйста.

Комментарии

Аватар пользователя siriusal siriusal 18 марта 2012 в 9:55

"despain" wrote:
/usr/bin/php -q /путь от корня до файла cron.php
то есть путь до интерпритатора /путь до cron.php

Это в графе "Действия" прописывать путь?

Аватар пользователя despain despain 18 марта 2012 в 10:36

Да,
первая часть показывает запустить интерпритатор а вторая часть путь до файла который необходимо выполнить

Аватар пользователя Vladimir_VVV Vladimir_VVV 18 марта 2012 в 11:09

если через рулсы то там дохрена условностей и проверок нужно писать, так как крон дергается у кого-как (от 10 минут до раз "в месяц" Smile ), проще сделать отдельный пхп-файл в него добавить стандартный drupal`овский bootstrap + один запрос для изменения поинтов, а далее это файл вызывать по крону с настройкой "раз в день", так будет быстрее и независимее.

Аватар пользователя Ch Ch 18 марта 2012 в 11:39

"Vladimir_VVV" wrote:
если через рулсы то там дохрена условностей и проверок нужно писать

В рулсах есть специальный модуль для этого — Rules Scheduler

Аватар пользователя Vladimir_VVV Vladimir_VVV 18 марта 2012 в 15:12

"Ch" wrote:
В рулсах есть специальный модуль для этого — Rules Scheduler

естественно, только он не отменяет "дохрена условностей и проверок".
Дешевле для сервака не проверять запускалось или нет действие в этот день, а тупо запустить 1 раз в день по крону.
хотя с другой стороны, если писать руками не "ага" то друпал-стайлнее модулем.

Аватар пользователя siriusal siriusal 25 марта 2012 в 19:56

Спасибо Vladimir_VVV. Способ удобный. Только bootstrap не понадобился. Просто сделал в отдельном php файле запросы к базе те, которые нужны. А в системном хроне (не друпаловском) выставил команду на выполнение файла с периодичностью в 1 день.

Аватар пользователя ФинтУшами ФинтУшами 10 марта 2013 в 19:46

"siriusal" wrote:
А можно понятный пример привести на друпале? Я почему-то уверен, что эта тема многих интересует.

Создайте два компонента, на вкладке рядом с правилами:
1) Компонент, который делает всё то, что вам надо выполнять регулярно: уменьшить поинты всем юзерам, сделать рассылку, etc.
2) Компонент с действием "запланировать выполнение компонента". Запланировать нужно, ес-но, первый компонент. Если нужно каждый день, указать время выполнения "00:00:00", например. Формат функции strtotime, там в админке всё будет написано.

Если всё сделать правильно, второй компонент появится в расписании - admin/config/workflow/rules/schedule . Модуль Rules Scheduler должен быть включен. Ну и крон запускать почаще.