Уже было несколько попыток перевести агенты на крон. В одной попытке не затрагивались периодические, в другой попытке подмешивалась еще и отправка почты. В этой попытке мы остановимся исключительно на всех агентах.
Немного ликбеза. Что такое агент в терминологии Битрикс? Это метод или функция, который выполняет определенную функцию по расписанию. Например, импорт/экспорт, очистка данных, либо еще какие-то действия. Если такие агенты не переводить на крон (планировщик), то они будут выполняться на хитах пользователя. Это означает, что последний будет ждать выполнения агента, что увеличит время выполнения страницы, и отрицательно скажется на отношении пользователя к сайту. Поэтому, данная инструкция обязательна к применению.
Итак, порядок действий:
1. Из /bitrix/php_interface/dbconn.php убрать любые упоминания:
CAgent::CheckAgents() вызывается два раза специально, чтобы выполнить как периодические агенты, так и не периодические. Если вам требуется, чтобы данный файл отвечал еще и за бекап, откомментируйте последнюю строчку.
В следующих статьях мы рассмотрим как добавлять задачу крон на исполнение данного файла в различных панелях управления.
Долганин Антон, как-то уже писал об этом, наверное и сейчас актуально: в уведомлениях модуля техподдержки для формирования ссылок на прикрепленные файлы используется $_SERVER['HTTP_HOST'], его тоже неплохо было бы определить вместе с $_SERVER['DOCUMENT_ROOT'], иначе ссылки в письмах будут битыми.
Долганин Антон, кажется не совсем так: письма формируются и сохраняются при создании/изменении обращений, а это может и в агентах происходить (например, если источник обращений — email'ы)
Марат, нет. Письмо может создаваться и из агента. Но отправляется оно исключительно отдельным функционалом. Исключения составляют некоторые типы писем, типа регистрации и напоминания пароля.
Долганин Антон, да. Может, и создается из агента в определенных случаях. Содержимое письма (те самые битые ссылки) определяется в момент создания (через CEvent::Send()), а не отправки. При создании обращения из агента по крону без $_SERVER["HTTP_HOST"] ссылки на прикрепленные файлы имеют такой вид: https://yadi.sk/i/U7M6EYqSdhf5o
Марат, блин, точно, формирует то он их при работе крона. А если доменов несколько? В общем, проблема гораздо шире, чем может казаться. Я бы рекомендовал все же в самом шаблоне прописывать явно домен. Коряво, но имхо в коде прописывать хост - немножко корявее.
Долганин Антон написал: А если доменов несколько? В общем, проблема гораздо шире, чем может казаться.
Проблема в том, что в продукте не предусмотрено штатного механизма для получения домена нужного сайта. В итоге все делают как могут, и далеко не все варианты будут работать всегда правильно.
Наиболее правильным, наверное, будет выбрать первый из заполненных:
URL сервера в настройках сайта
URL сайта в настройках главного модуля
$_SERVER['HTTP_HOST']
$_SERVER['SERVER_NAME']
Даже если одно из первых двух полей заполнено, нет никакой гарантии что они заполнены правильно — нет никакой проверки этих полей.
Долганин Антон написал: Я бы рекомендовал все же в самом шаблоне прописывать явно домен.
Вот только это стандартный шаблон стандартного модуля Техподдержка. Да и прописать там домен явно не получится: ссылка полностью формируется в коде модуля.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».