TCron - описание класса
14.02.2009Для полноценной работы любой CMS иногда требуется запуск в определенное время скриптов. В блоголёте эту задачу решает класс TCron. Этот класс устроен достаточно интересно и для своей работы не требует добавления в cron jobs на *nix системах, а в Windows cron jobs отсутствует в системе. Но блоголёт работает при любых условиях. Алгоритм вызова регулярных заданий прост: при каждом обращении к странице блога, после выдачи контента, проверяется время последнего запуска крона. Если более часа, то выполняются две следующие строки кода:
$cron = &TCron::Instance();
$cron->Ping();
Первая строка создает, как это принято в блоголёте, объект и следующая строка пингует страницу крона. То есть вскрытую запрашивается страница с адресом крона, если посмотреть исходник метода Ping. В одно и тоже время может быть запущен только один экземпляр крона - все остальные попытки открыть страницу крона будут игнорироваться. Если вы установите блоголёт на нескольких сайтах используя одну папку, то будет работать один крон для всех сайтов - для этого не нужно менять никаких настроек.
Чтобы добавить задание крону есть метод Add класса TCron:
public function Add($type, $ClassName, $Function, $Params = '')
где параметр $type может принимать только одно из значений:
- single - выполнить добавляемое задание только один раз и удалить из очереди заданий
- hour - выполнять задание каждый час
- day - ежедневно выполнять
- week - каждую неделю выполнять
Все очень просто и эффективно работает. регулярные Задания в блоголёте не ограничены по времени, поэтому я рекомендовал бы вам добавлять в крон задания, которые могут долго выполнятся, например рассылка почты или кросспостинг - это рекомендация для разработчиков плагинов, так как рядовой пользователь просто не имеет возможности на это влиять.
← Ранее TUrlmap - описание класса
Позже Виджеты в блоголёте →
Комментарии (5) на запись “TCron - описание класса”
Оставить комментарий
Для всех вопросов о работе движка существует тикет система
http://litepublisher.ru/
где следует оставлять любые вопросы о работе блоголёта