Cron и темизация

удаленные файлы

Регулярные процедуры

Чтобы Drupal периодически выполнял определенные действия, в планировщике задач операционной системы необходимо настроить запуск файла cron.php, который находится в корне каждого Drupal-сайта. При выполнении этого файла будет вызываться хук hook_cron, и в нашем модуле мы напишем его реализацию.

Процедура получения и обработки XML-файла, расположенного на удаленном сервере, довольно проста, поэтому она здесь не приведена. При желании вы можете самостоятельно разобрать логику работы этой функции, изучив исходные коды модуля Currencies. В результате ее работы формируется массив $result, в котором содержится информация о курсах валют и который передается функции темизации.

function currencies_cron() {

currencies_contents();

}

Функцию currencies_contents() см. в листинге 3.

Листинг 3

function currencies_contents() {

if(!$c = cache_get('currencies')) {

/* здесь пропущен код, отвечающий за получение

и обработку XML-файла */

$output = theme('currencies_block', $result);

$t = variable_get('currencies_list_freq', 3600);

if(!$t || !is_numeric($t)) $t = 3600;

cache_set("currencies", $output, 'cache', time() + $t);

} else {

$output = $c->data;

}

return $output;

}

Здесь мы сначала проверяем, нет ли запрашиваемых данных в кэше Drupal, если нет, то происходит соединение с удаленным сервером (его адрес указан через административный интерфейс модуля), получение и обработка XML-файла и формирование массива данных, который передает функции темизации. Функция темизации формирует выходной HTML-код, записываемый в кэш, его время жизни явно указывается исходя из соответствующей настройки, заданной в интерфейсе управления модулем. Drupal автоматически управляет закэшированными данными и при необходимости удаляет устаревшие записи.

Функция currencies_contents() будет использоваться не только при запуске cron-задания, но и при формировании блока с данными, который будет показываться пользователю. Таким образом, практически всегда пользователи будут видеть данные, полученные из кэша Drupal, если же на сайте не работает cron и нет закэшированных данных о курсах валют, то произойдет соединение с сервером ЦБ, формирование и запись в кэш необходимых данных.


Источник: http://romka.eu

Добавить комментарий:
Имя:
E-mail:
2022 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь