Как создать свою задачу для регулярного выполнения?
Например, есть модуль, который решает некую задачу, и требуется его запускать каждые 3 часа, и другой модуль, который требуется запускать раз в сутки.
Как в Drupal это делается?
Просто мне не очень понятна идеология.
Например есть такая запись
0 * * * * wget -O - -q -t 1 http://www.example.com/cron.php
И что она делает? Запускает http://www.example.com/cron.php раз в сутки? А как мне к этому вызову прикрутить выполнение требуемой мне задачи в Drupal? Например если в модуле с именем "noname" нужно сделать что-то.
Спасибо.
Комментарии
Есть такой хороший модуль Rules. В нем можно создавать условия практически для всего, а с минимальным знанием PHP вообще всего чего хотите. Например у меня на портале после того как пользователь регистрируется ему назначается количество поинтов в зависимости от заполнения карточки.
Попробуйте модуль особо не сложен.
Про Rules - модуль выполняет действия реагируя на события? Или есть возможность выполнять что-то по времени?
http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hoo...
Если я правильно понял, то hook_cron() выполнится только во время вызова cron.php.
То есть если я хочу что-то делать каждые 10 минут, то нужно вызывать cron.php каждые 10 минут - верно?
да
Вопрос остался без ответа. У меня крон запускается каждый час. Как выполнять задачу раз в сутки?
В своей реализации hook_cron() проверять, прошли ли сутки с момента последнего выполнения действий. Например
<?php
function mymodule_cron(){
if(variable_get('my_var', 0) <= time() - 86400){
// делаем что-то
variable_set('my_var', time());
}
}
?>
На заметку
Если у вас должно выполняться что-то длительное, например обновлять множество каких-нибудь полей материалов. Тогда почитайте про queue. Довольно простой в реализации механизм постановки в очередь и выполнения множественных операция частями.
kv4, спасибо.