Как создать задачу выполняемую по расписанию

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

Аватар пользователя kv4 kv4 24 марта 2011 в 14:03

Как создать свою задачу для регулярного выполнения?
Например, есть модуль, который решает некую задачу, и требуется его запускать каждые 3 часа, и другой модуль, который требуется запускать раз в сутки.
Как в Drupal это делается?

Просто мне не очень понятна идеология.
Например есть такая запись
0 * * * * wget -O - -q -t 1 http://www.example.com/cron.php

И что она делает? Запускает http://www.example.com/cron.php раз в сутки? А как мне к этому вызову прикрутить выполнение требуемой мне задачи в Drupal? Например если в модуле с именем "noname" нужно сделать что-то.

Спасибо.

Комментарии

Аватар пользователя demart demart 24 марта 2011 в 14:07

Есть такой хороший модуль Rules. В нем можно создавать условия практически для всего, а с минимальным знанием PHP вообще всего чего хотите. Например у меня на портале после того как пользователь регистрируется ему назначается количество поинтов в зависимости от заполнения карточки.

Попробуйте модуль особо не сложен.

Аватар пользователя kv4 kv4 24 марта 2011 в 15:38

Про Rules - модуль выполняет действия реагируя на события? Или есть возможность выполнять что-то по времени?

Аватар пользователя kv4 kv4 24 марта 2011 в 15:37

Если я правильно понял, то hook_cron() выполнится только во время вызова cron.php.
То есть если я хочу что-то делать каждые 10 минут, то нужно вызывать cron.php каждые 10 минут - верно?

Аватар пользователя Artu Artu 12 апреля 2013 в 23:34

Вопрос остался без ответа. У меня крон запускается каждый час. Как выполнять задачу раз в сутки?

Аватар пользователя kv4 kv4 22 мая 2013 в 12:21

"Artu" wrote:
Как выполнять задачу раз в сутки?

В своей реализации hook_cron() проверять, прошли ли сутки с момента последнего выполнения действий. Например

<?php
function mymodule_cron(){
  if(
variable_get('my_var'0) <= time() - 86400){
    
// делаем что-то
    
variable_set('my_var'time());
  }
}
?>

На заметку
Если у вас должно выполняться что-то длительное, например обновлять множество каких-нибудь полей материалов. Тогда почитайте про queue. Довольно простой в реализации механизм постановки в очередь и выполнения множественных операция частями.