* * * * * [path/to/php] [path/to/suite/instance]/bin/console {-e [env]} schedulers:run > /dev/null 2>&1
В разделе описана настройка Планировщика в SuiteCRM 8.9.0+
(появились дополнительные задания для работы с обновлённым модулем маркетинговых кампаний).
Настройка Планировщика в предыдущих версиях системы описана в
этом разделе.
Планировщик используется для настройки выполнения регулярных заданий, которые запускаются с указанными интервалами для выполнения различных действий в SuiteCRM, в том числе: проверки почтовых ящиков для входящей почты, рассылки электронных писем в рамках маркетинговых кампаний, генерации отчётов по расписанию, очистки таблиц БД и многих других.
Корректно настроенные задания Планировщика обеспечивают эффективное выполнение рутинных задач без ручного вмешательства.
Для выполнения заданий в SuiteCRM используются ресурсы внешних Планировщиков, таких как cron (в UNIX-подобных операционных системах) или Планировщик заданий (в Windows).
В Windows используйте системный Планировщик заданий, вариант настройки для Windows описан в этом разделе для SuiteCRM 7.x.
Ниже описывается настройка Планировщика в Linux и iOS.
Для использования Планировщика настройте систему на ежеминутный запуск команды ./bin/console schedulers:run. Это гарантирует выполнение всех заданий SuiteCRM в соответствии с их расписанием.
Для этого отредактируйте файл crontab согласно описанию ниже.
Во избежание проблем при выполнении заданий Планировщика, рекомендуется выполнять их под той же учётной записью, под которой запущен веб-сервер.
Если необходимо использовать учетную запись другого пользователя -
измените массив allowed_cron_users в файле config.php, добавив в него необходимого пользователя.
Дополнительная информация о настройке учётных записей при работе с Планировщиком описана ниже.
В панели администратора в подразделе Система выберите раздел Планировщик .
В открывшейся Форме отображается перечень доступных заданий, а также их статус, периодичность и интервал выполнения.
Для просмотра более детальной информации откройте необходимое задание.
Для изменения задания выберите пункт Править в меню Действия в Форме просмотра задания или нажмите на иконку редактирования соответствующего задания в Форме списка.
Для быстрого изменения какого-либо параметра можно воспользоваться Быстрой правкой, не открывая Форму редактирования.
Обратите внимание на статус редактируемого задания: будут выполняться только активные задания.
При установке опции Дополнительные параметры возможна более детальная настройка задания в формате crontab-нотации.
Задание проверяет все таблицы системы на наличие записей, помеченных на удаление (deleted = 1) и физически удаляет найденные записи из базы данных первого числа каждого месяца. Резервные копии файлов очищаемых таблиц помещаются в папку public/legacy/cache/backups, к названиям создаваемых копий добавляется информация о дате/времени создания резервного файла.
Задание проверяет почтовые ящики активных учётных записей, настроенных в разделе Входящие E-mail панели администрирования.
Задание проверяет все учётные записи для входящей почты, у которых в колонке Тип указано Обработка возврата. задание является важной составляющей при проведении массовой рассылки писем.
Задание обрабатывает очередь исходящих писем при проведении массовой рассылки (Не актуально для SuiteCRM версий 8.9+).
Задание очищает таблицы tracker и tracker_sessions каждые 30 дней.
Задание отправляет электронные письма с напоминанием о предстоящем звонке или встрече.
Задание помечает выполненные задания в БД как удалённые (deleted=1) ,если они были созданы более 7 дней назад и удаляет из БД записи с выполненными заданиями, если они были созданы более 21 дня назад.
Некоторые записи в системе (например, Документы или Заметки) содержат ссылки на файлы, которые физически хранятся в отдельной папке системы. Если такая запись была удалена из SuiteCRM (deleted=1), то после автоматической очистки таблиц Планировщиком 1-го числа следующего месяца такая запись будет физически удалена из БД. При выполнении текущего задания будут удалены все файлы, связанные с удалённой записью.
Задание удаляет из ленты все события, произошедшие более 30 дней назад.
Задание выполняет действия, настроенные в модуле Процессы.
Задание необходимо для работы с Обращениями через внешний портал.
Задание индексирует документы для выполнения по ним поиска с использованием Elasticsearch.
Задание создаёт и рассылает отчёты, указанные в модуле Отчёты по расписанию.
Задание удаляет временные файлы, загруженные через поля файлов и вложений.
Задание помещает в очередь рассылки запланированные к отправке письма маркетинговых кампаний.
Задание отправляет письма из очереди рассылки.
Планировщик очистки базы данных перенесён на платформу Symfony и теперь также удаляет файлы из внешних хранилищ, если таковые используются.
В 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 может выглядеть следующим образом:
'cron' =>
array (
'max_cron_jobs' => 10,
'max_cron_runtime' => 30,
'min_cron_interval' => 30,
'allowed_cron_users' =>
array (
0 => 'www-data',
),
),
Для проверки успешности выполнения заданий воспользуйтесь виджетом, отображающим:
Последнего пользователя, запустившего задания
Последний успешный запуск
Также для проверки можно обратить внимание на следующее:
В Форме просмотра соответствующего задания обратите внимание на поле Последний запуск, где должны отображаться дата/время последнего выполнения задания.
Просмотрите журнал suitecrm.log. SuiteCRM будет регистрировать эти события, если уровень журнала настроен на их регистрацию (его можно просмотреть и изменить в подразделе Настройка конфигурации панели администратора).
В случае сбоя выполнения какого-либо задания Планировщика, файл suitecrm.log может стать отправной точкой для устранения неполадок, наряду с журналом ошибок веб-сервера (как правило это файл error.log).
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.