27 октября 2010

WordPress Cron менеджер. Часть 2

cron jobСегодня в разделе WordPress плагины вторая часть о том как работать с Crony Cronjob Manager. Об установке параметров этого плагина читайте в первой части. Главный недостаток Crony Cronjob Manager это отсутствие возможности задать собственные промежутки выполнения заданий через интерфейс настроек. Возможно в будущих версиях эта возможность появится.
Всего предустановленных промежутков у меня в расписании оказалось тринадцать, начиная с «Каждую минуту» и до «Once Yearly(раз в год)».cron
Но что делать если необходимо установить расписание на промежуток времени, которого нет в списке? Например раз в шесть часов. Для этого можно внести изменения непосредственно в код плагина. Идем в папку plugins/crony/ и открываем файл crony.php. В нем нужно найти строку

function crony_schedules ($schedules)

эта функция задает различные интервалы расписания и в моем случае содержит код


	$schedules['everymin'] = array( 'interval' => 60,'display'  => __('Каждую минуту')	);
    $schedules['twicehourly'] = array( 'interval' => 1800, 'display' => __('Twice Hourly') );
    $schedules['weekly'] = array( 'interval' => 604800, 'display' => __('Once Weekly') );
    $schedules['twiceweekly'] = array( 'interval' => 302400, 'display' => __('Twice Weekly') );
    $schedules['monthly'] = array( 'interval' => 2628002, 'display' => __('Once Monthly') );
    $schedules['twicemonthly'] = array( 'interval' => 1314001, 'display' => __('Twice Monthly') );
    $schedules['yearly'] = array( 'interval' => 31536000, 'display' => __('Once Yearly') );
    $schedules['twiceyearly'] = array( 'interval' => 15768012, 'display' => __('Twice Yearly') );
    $schedules['fouryearly'] = array( 'interval' => 7884006, 'display' => __('Four Times Yearly') );
    $schedules['sixyearly'] = array( 'interval' => 5256004, 'display' => __('Six Times Yearly') );

Из приведенного видим, что интервалы заданы в виде массива с указанием промежутка времени выполнения в секундах, значит нужно добавить еще один элемент массива с интервалом в 21 600 секунд, то есть 6 часов

$schedules['fourdaily'] = array( 'interval' => 21600,'display'  => __('Каждые 6 часов')	);

Сохраняем файл crony.php и снова заходим в установки плагина

cron

Нужный нам промежуток времени появился в списке доступных интервалов.
Теперь что касается пользовательского кода для выполнения по расписанию. Он находится в поле Custom PHP to Run и самый простой способ, это внести код прямо в это поле, но в случае, если код большой или нужно выполнить уже существующую функцию, сохраненную в файле functions.php, то следует поступить так, вносим в Custom PHP to Run вызов своей функции

cron_myCronFunc();

Тело функции cron_myCronFunc в файле functions.php будет таким

my_func();
$email = "my@mail.com";
$emailfrom = "myCronFunc";
$message = "croned FROM myCronFunc every 6 hours";
mail($email, "mail", $message, $emailfrom );

то есть выполняем нужную нам функцию и отправляем на e-mail отчет о выполнении

Статьи по теме
Статья оказалась полезной? Подпишись на RSS рассылку или следуй за мной на твиттере @wpstarter или по этой ссылке wpstarter

Комментариев: 4

Вы можете следовать любому комментарию через RSS 2.0 feed.

Вы можете оставить комментарий или trackback с вашего сайта.

  1. Прочел обе части поста и задумался. Подскажите практическое применение данного скрипта., плагина… Не могу придумать или даже предположить. Функция интересная, но…

    • Alex:

      Если поставить плагин Cron GUI и посмотреть для чего крон используется ядром WP станет понятно что к чему и зачем.
      Один пример из практики, можно юзать этот плагин для опроса новостных сайтов и закачки в свою базу

  2. Полезный плагин.
    Правда потратил много времени на его настройку.

Оставьте комментарий

Обведите фигуру по линии:

Ставим WordPress на локальном копьютере