Плагин: Планировщик заданий

О плагине

  • @package cronManager
  • @author Vladislav Andreev v@salesman.pro
  • @version v.0.5 beta от 05.04.2020

Плагин позволяет управлять заданиями для планировщика CRON из удобного веб-интерфейса.

Внимание!

Данный плагин является платным, однако на до его выхода из стадии Beta распространяется бесплатно. Мы собираем отзывы для определения дальнейшего развития разработки.

Changelog

03.02.2020: v0.5 beta

  • первый релиз beta-версии

Возможности плагина

  • Управление заданиями CRONTAB в удобном интерфейсе
  • Человеко-понятное формирование периодичности выполнения задания
  • Просмотр логов выполнения заданий ( последние 10 результатов для каждого задания )
  • Отключение задания без необходимости удаления
  • Контроль выполнения задания ( для длительных заданий ) - новое задание не будет запущено, если не закончено выполнение предыдущего запуска этого же задания

Настройка плагина

Запуск основного процесса

Для успешного функционирования плагина следует добавить единственное задание в стандартный планировщик заданий:

 

* * * * * path/to/phpbin path/to/crm/plugins/cronManager/scheduler.php 1>> /dev/null 2>&1

 

Именно этот скрипт будет управлять всеми остальными заданиями.

Важно!

Замените path/to/phpbin на свой путь до исполняемого файла PHP
Замените path/to/crm на свой абсолютный путь до папки с CRM

Формирование заданий

Формирование заданий состоит из 3-х составляющих:

  • периодичность
  • исполняемая программа - wget, curl, php и т.п.
  • исполняемая команда (скрипт) - наш php-скрипт, который будем выполнять

Подробнее про Cron - https://ru.wikipedia.org/wiki/Cron

Исполняемая программа

Исполняемая программа ( ИП ) - это основная программа, которая выполняет указанную задачу, записанную в виде скрипта. В качестве ИК могут использоваться:

  • wget
  • curl
  • php
  • bash
  • и т.п.

Наши скрипты написаны на PHP, поэтому будем рассматривать его в качестве исполняемой программы:

  • Минимальная версия PHP, поддерживаемая плагином 7.2
  • Если на сервере установлена одна версия PHP, то можно указать просто php
  • Если на сервере установлены альтернативные версии PHP, то рекомендуется выяснить путь до исполняемого файла командой locate -b '\php' ( например /opt/php72/bin/php )

Важно!

Утилиты WGET и CURL используют HTTP-запросы (как браузер), поэтому ИП должна содержать URL-адрес.

Например:

* * * * * /usr/bin/wget -O - -q -t 1 --no-check-certificate https://crm.ru/api/leads/cron.php?api_key=t1xdeOwWSIqgDol70CkRdK3WD4N4cm /dev/null 2>&1

Исполняемая команда ( ИК )

Исполняемая команда - это наш скрипт, который выполняет необходимые действия. Плагин может подключить существующие системные скрипты, разработанные для планировщика заданий с рекомендованными настройками по периодичности:

  • Бекап Базы данных - производит ежедневное резервное копирование БД
  • Дела на день - производит отправку дел на текущий день, рекомендуется запуск в утреннее время
  • Проверка почты сотрудников - производит проверку почты через Почтовик для каждого сотрудника, не зависимо от того - авторизовался пользователь в системе или нет
  • Сборщик заявок - производит проверку почтовых ящиков, настроенных в модуле Сборщик заявок
  • Синхронизация истории звонков (для всех поддерживаемых PBX) - производит синхронизацию истории звонков

Периодичность

Плагин поддерживает 6 периодов запуска + 1 экспертный режим ( для тех, кто знаком с командами ):

  1. Каждую минуту - в этом режиме задается с какой периодичностью в минутах будет выполняться задание. Например: каждые Х минут
  2. Каждый час - в этом режиме задание выполняется каждые Х часов
  3. Ежедневно - в этом режиме задание выполняется в Х часов Y минут ежедневно
  4. Еженедельно - в этом режиме задание выполняется в указанное время Х часов Y минут в указанные дни недели
  5. Ежемесячно - в этом режиме задание выполняется в указанное время Х часов Y минут в указанные дни каждого месяца
  6. Ежегодно - в этом режиме задание выполняется в указанное время Х часов Y минут в указанный день указанного месяца
  7. Экспертный режим - в этом режиме есть возможность задать задание в явном виде

Использование в сторонних модулях и плагинах

Для добавления своего задания в Планировщик надо подключить необходимые классы:

require_once $rootpath."/plugins/cronManager/php/autoload.php";
require_once $rootpath."/plugins/cronManager/vendor/autoload.php";
$cron = new Cronman\Cronman();
$task = [
// название задания
"name" => "customName",
// стандартная периодичность: см. $cron::PERIODS;
"parent" => "everyminutes",
// исполняемая программа
"bin" => "/opt/php72/bin/php",
// исполняемый скрипт, где {{DIR}} будет заменен на 
// абсолютный путь до папки с CRM,
// или указываем свой путь или https-адрес
"script" => "{{DIR}}/cron/backup.php",
// массив с указанием периодичности
"period" => [
"i" => "",
"h" => "",
"d" => "",
"m" => "",
// для экспертного режима, например 0 */1 * * *
"cmd" => "",
],
// активность задания - on|off
"active" => "on",
];
// добавляет/редактирует задание и 
// возвращает id записи задания в базе данных
$shedule = $cron -> setTask($id, $task);
// возвращает данные по заданию
$shedule = $cron -> getTask($id);
// удаляет задание
$result = $cron -> deleteTask($id);
// возвращает список заданий
$result = $cron -> getTaskList();


Что-то не понятно? Задай вопрос: