Планировщик

В разделе описана настройка Планировщика в SuiteCRM 8.9.0+ (появились дополнительные задания для работы с обновлённым модулем маркетинговых кампаний).
Настройка Планировщика в предыдущих версиях системы описана в этом разделе.

Планировщик используется для настройки выполнения регулярных заданий, которые запускаются с указанными интервалами для выполнения различных действий в SuiteCRM, в том числе: проверки почтовых ящиков для входящей почты, рассылки электронных писем в рамках маркетинговых кампаний, генерации отчётов по расписанию, очистки таблиц БД и многих других.
Корректно настроенные задания Планировщика обеспечивают эффективное выполнение рутинных задач без ручного вмешательства.

1. Настройка Планировщика

Для выполнения заданий в SuiteCRM используются ресурсы внешних Планировщиков, таких как cron (в UNIX-подобных операционных системах) или Планировщик заданий (в Windows).

В Windows используйте системный Планировщик заданий, вариант настройки для Windows описан в этом разделе для SuiteCRM 7.x.

Ниже описывается настройка Планировщика в Linux и iOS.

Для использования Планировщика настройте систему на ежеминутный запуск команды ./bin/console schedulers:run. Это гарантирует выполнение всех заданий SuiteCRM в соответствии с их расписанием.

Для этого отредактируйте файл crontab согласно описанию ниже.

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

Если необходимо использовать учетную запись другого пользователя - измените массив allowed_cron_users в файле config.php, добавив в него необходимого пользователя.

Дополнительная информация о настройке учётных записей при работе с Планировщиком описана ниже.

2. Настройка заданий Планировщика

  1. В панели администратора в подразделе Система выберите раздел Планировщик .

  2. В открывшейся Форме отображается перечень доступных заданий, а также их статус, периодичность и интервал выполнения.

Планировщик SuiteCRM 8.x - перечень заданий

  1. Для просмотра более детальной информации откройте необходимое задание.

  2. Для изменения задания выберите пункт Править в меню Действия в Форме просмотра задания или нажмите на иконку редактирования соответствующего задания в Форме списка.

Для быстрого изменения какого-либо параметра можно воспользоваться Быстрой правкой, не открывая Форму редактирования.

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

Планировщик SuiteCRM 8.x - редактирование задания

При установке опции Дополнительные параметры возможна более детальная настройка задания в формате crontab-нотации.

Планировщик SuiteCRM 8.x - настройка задания в формате crontab-нотации

2.1. Стандартный список заданий

Очищать базу данных первого числа каждого месяца

Задание проверяет все таблицы системы на наличие записей, помеченных на удаление (deleted = 1) и физически удаляет найденные записи из базы данных первого числа каждого месяца. Резервные копии файлов очищаемых таблиц помещаются в папку public/legacy/cache/backups, к названиям создаваемых копий добавляется информация о дате/времени создания резервного файла.

Проверять почтовые ящики для входящей почты

Задание проверяет почтовые ящики активных учётных записей, настроенных в разделе Входящие E-mail панели администрирования.

Проверять почтовые ящики для возвращаемых писем

Задание проверяет все учётные записи для входящей почты, у которых в колонке Тип указано Обработка возврата. задание является важной составляющей при проведении массовой рассылки писем.

Запускать ночью массовую рассылку писем

Задание обрабатывает очередь исходящих писем при проведении массовой рассылки (Не актуально для SuiteCRM версий 8.9+).

Очищать таблицы трекера

Задание очищает таблицы tracker и tracker_sessions каждые 30 дней.

Отправлять по E-mail напоминания о мероприятиях

Задание отправляет электронные письма с напоминанием о предстоящем звонке или встрече.

Очищать очередь заданий

Задание помечает выполненные задания в БД как удалённые (deleted=1) ,если они были созданы более 7 дней назад и удаляет из БД записи с выполненными заданиями, если они были созданы более 21 дня назад.

Удалять неиспользуемые документы из системы

Некоторые записи в системе (например, Документы или Заметки) содержат ссылки на файлы, которые физически хранятся в отдельной папке системы. Если такая запись была удалена из SuiteCRM (deleted=1), то после автоматической очистки таблиц Планировщиком 1-го числа следующего месяца такая запись будет физически удалена из БД. При выполнении текущего задания будут удалены все файлы, связанные с удалённой записью.

Очищать ленту событий

Задание удаляет из ленты все события, произошедшие более 30 дней назад.

Выполнять настроенные процессы

Задание выполняет действия, настроенные в модуле Процессы.

Портал - проверять почтовые ящики для входящей почты

Задание необходимо для работы с Обращениями через внешний портал.

Elasticsearch-индексация

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

Создавать отчёты по расписанию

Задание создаёт и рассылает отчёты, указанные в модуле Отчёты по расписанию.

2.2. Дополнительные задания в SuiteCRM версий 8.9+

Удалять временные файлы

Задание удаляет временные файлы, загруженные через поля файлов и вложений.

Добавлять рассылку в очередь

Задание помещает в очередь рассылки запланированные к отправке письма маркетинговых кампаний.

Запускать рассылку

Задание отправляет письма из очереди рассылки.

Планировщик очистки базы данных

Планировщик очистки базы данных перенесён на платформу Symfony и теперь также удаляет файлы из внешних хранилищ, если таковые используются.

3. Настройка файла crontab

В Linux у каждого пользователя есть собственный файл crontab. Это относится в том числе к пользователям, которые не могут войти в консоль, например, к стандартным пользователям веб-сервера, присутствующим во многих установках по умолчанию (например, www-data и nobody).

В следующих примерах будет использоваться пользователь www-data.

Для вывода содержимого файла crontab пользователя www-data используйте следующую команду:

sudo crontab -l -u www-data

Для редактирования файла crontab используйте следующую команду:

sudo crontab -e -u www-data

Добавьте в файл crontab следующую команду:

* * * * * [path/to/php] [path/to/suite/instance]/bin/console {-e [env]} schedulers:run > /dev/null 2>&1

Если есть потребность уменьшить частоту запуска crontab (может быть полезно в интенсивно используемой системе), измените первый столбец, чтобы запускать задания каждые две минуты, например:

*/2 * * * * [path/to/php] [path/to/suitecrm]/bin/console {-e [env]} schedulers:run > /dev/null 2>&1

Как правило, файлы php находятся в папках /usr/bin или /usr/local/bin. Если файлы в указанных папках отсутствуют, для уточнения расположения файлов выполните команду

which php

В некоторых дистрибутивах Linux (в частности, в Ubuntu) есть ещё один файл crontab, общесистемный. Его можно изменить, отредактировав файл:

sudo vi /etc/crontab

Обратите внимание: комментарии внутри этого файла crontab подчёркивают, что это общесистемный crontab. Здесь указываются команды, которые будут запускаться от имени любого пользователя, поэтому в нём есть дополнительный столбец, где указывается, от имени какого пользователя запускается команда, например:

* * * * * www-data [path/to/php] [path/to/suitecrm]/bin/console {-e [env]} schedulers:run > /dev/null 2>&1

Параметр {-e [env]} не является обязательным и устанавливает переменные окружения.

Имя пользователя, под которым должны выполняться задания, зависит от конфигурации системы.

Рекомендуемый подход — определить, какая учётная запись запускает веб-сервер, и настроить задания cron для запуска от той же учётной записи. Такой подход оптимизирует управление правами доступа и предотвращает конфликты между веб-приложением и запланированными заданиями при доступе к общим базам данных и файлам.

Неправильная настройка пользователя может вызвать серьёзные проблемы с установкой.

Убедитесь, что настройки прав доступа позволяют процессам читать и записывать одни и те же ресурсы, которые каждый из них создаёт или изменяет.

Если вы ранее запускали задания cron под пользователем root из-за неправильной настройки, после исправления настроек необходимо указать соответствующих владельцев и права доступа для всей структуры каталогов SuiteCRM, после чего выполнить быстрое восстановление.

Также проверьте указание соответствующего пользователя в массиве allowed_cron_users файла path/to/suitecrm/public/legacy/config.php.

Только пользователи, указанные в массиве allowed_cron_users файла config.php, могут выполнять команду ./bin/console schedulers:run. Попытка выполнить эту команду пользователем, не указанным в allowed_cron_users приведёт к завершению работы скрипта.

Как правило, добавлять вручную пользователя в этот массив нет необходимости, поскольку установщик SuiteCRM делает это автоматически, добавляя текущего пользователя веб-сервера.

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

Соответствующий раздел config.php может выглядеть следующим образом:

config.php
'cron' =>
array (
'max_cron_jobs' => 10,
'max_cron_runtime' => 30,
'min_cron_interval' => 30,
'allowed_cron_users' =>
array (
0 => 'www-data',
),
),

4. Проверка выполнения заданий

Для проверки успешности выполнения заданий воспользуйтесь виджетом, отображающим:

  • Последнего пользователя, запустившего задания

  • Последний успешный запуск

Проверка выполнения заданий Планировщика

Также для проверки можно обратить внимание на следующее:

  • В Форме просмотра соответствующего задания обратите внимание на поле Последний запуск, где должны отображаться дата/время последнего выполнения задания.

  • Просмотрите журнал suitecrm.log. SuiteCRM будет регистрировать эти события, если уровень журнала настроен на их регистрацию (его можно просмотреть и изменить в подразделе Настройка конфигурации панели администратора).

  • В случае сбоя выполнения какого-либо задания Планировщика, файл suitecrm.log может стать отправной точкой для устранения неполадок, наряду с журналом ошибок веб-сервера (как правило это файл error.log).

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.