Для полноценной работы любой 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 - каждую неделю выполнять

Все очень просто и эффективно работает. регулярные Задания в блоголёте не ограничены по времени, поэтому я рекомендовал бы вам добавлять в крон задания, которые могут долго выполнятся, например рассылка почты или кросспостинг - это рекомендация для разработчиков плагинов, так как рядовой пользователь просто не имеет возможности на это влиять.