Уже было несколько попыток перевести агенты на крон. В одной попытке не затрагивались периодические, в другой попытке подмешивалась еще и отправка почты. В этой попытке мы остановимся исключительно на всех агентах.
Немного ликбеза. Что такое агент в терминологии Битрикс? Это метод или функция, который выполняет определенную функцию по расписанию. Например, импорт/экспорт, очистка данных, либо еще какие-то действия. Если такие агенты не переводить на крон (планировщик), то они будут выполняться на хитах пользователя. Это означает, что последний будет ждать выполнения агента, что увеличит время выполнения страницы, и отрицательно скажется на отношении пользователя к сайту. Поэтому, данная инструкция обязательна к применению.
Итак, порядок действий:
1. Из /bitrix/php_interface/dbconn.php убрать любые упоминания:
CAgent::CheckAgents() вызывается два раза специально, чтобы выполнить как периодические агенты, так и не периодические.
Если вам требуется, чтобы данный файл отвечал еще и за бекап, откомментируйте последнюю строчку.
В следующих статьях мы рассмотрим как добавлять задачу крон на исполнение данного файла в различных панелях управления.
PS: Если вам нужно перевести на крон только НЕпериодические агенты, следует воспользоваться данным курсом. Отличия в подходах довольно специфичные и в 90% случаев можно не обращать на них внимания.
Почта остается на хитах специально, так как это статья для клиентов, и не всем понравится почта на кроне. Для перевода еще и почты рекомендую данную статью.
После прочтения остались вопросы.
1) Как при таком способе запуска создавать агенты?
2) Как задавать интервал выполнения агентов - интервал запуска cron_events.php и интервал самого агента?
3) Как и с какой периодичностью запускать файл cron_events.php?
4) Чем описанный вами метод отличается от изложенного в курсе?
Часть ответов можно найти здесь, однако, раз уж есть статья, хотелось бы увидеть это в одном месте.
1. Как обычно. Нет разницы, периодические они или нет. Запускаться по крону будут и те и те.
2. Интервал запуска cron_events - лучше ставить 1 минуту. Но некоторые хостинги могут запретить такой частый запуск. Тогда от агентов по крону лучше отказаться.
Если интервал агента меньше 1 минуты (что бывает крайне редко) это не страшно. Либо переводить агенты посредством данной статьи http://dev.1c-bitrix.ru/community/blogs/oracle/215.php (тогда агенты с интервалом меньше минуты делать периодическими, и они будут выполняться на хитах).
3. Ответил выше.
4. Тоже ответил выше, но повторюсь - в моей статье на крон переводятся и периодические и не периодические агенты. В курсе переводятся только не-периодические агенты. Чтобы уже не путаться, я все собрал под одну гребенку.
Антон, делаю перевод агентов по вашей инструкции, на всякий случай спрошу - как вернут агенты на хиты?
Есть ли штатные агенты, которым, по той или иной причине, необходимо выполнятся на хитах?
2. Убрать define константы NO_AGENT_CHECK, если он есть.
Штатные агенты - я знаю только один - отложенное удаление файлового кеша (который запускается для очистки кеша каталога при изменении элемента каталога каждую секунду). Но это только для файлового, я бы все равно рекомендовал мемкеш. Все остальные агенты имеют достаточно большой период запуска (несколько минут и более).
Антон, подскажите пожалуйста, можно ли и как, для одного определенного агента сделать свое отдельное расписание крона.
Поясню зачем мне это надо:
Один из агентов выполняет импорт прайслиста.
Прайс лист огромный ~1,3 млн. строк. И за 10 минут не успевает загрузится весь, не то что за 1 минуту.
Мое предположение:
Создать файл аналогичный cron_events.php , но в место
Здравствуйте! Нам сделали модуль импорта который работает не корректно. Не корректность заключается в том что явно не хватает времени импортировать данные. в результате картинки у многих товаров не импортируются.
Можно ли как - то запустить импорт вручную и добиться чтобы импорт картинок прошел успешно?
Если кто не понял вопроса, то что мне нужно написать? какой скрин предоставить?
1) Как при таком способе запуска создавать агенты?
2) Как задавать интервал выполнения агентов - интервал запуска cron_events.php и интервал самого агента?
3) Как и с какой периодичностью запускать файл cron_events.php?
4) Чем описанный вами метод отличается от изложенного в
Часть ответов можно найти
1. Как обычно. Нет разницы, периодические они или нет. Запускаться по крону будут и те и те.
2. Интервал запуска cron_events - лучше ставить 1 минуту. Но некоторые хостинги могут запретить такой частый запуск. Тогда от агентов по крону лучше отказаться.
Если интервал агента меньше 1 минуты (что бывает крайне редко) это не страшно. Либо переводить агенты посредством данной статьи
3. Ответил выше.
4. Тоже ответил выше, но повторюсь - в моей статье на крон переводятся и периодические и не периодические агенты. В курсе переводятся только не-периодические агенты. Чтобы уже не путаться, я все собрал под одну гребенку.
Есть ли штатные агенты, которым, по той или иной причине, необходимо выполнятся на хитах?
Чтобы вернуть агенты обратно, необходимо:
1. Выполнить
2. Убрать define константы NO_AGENT_CHECK, если он есть.
Штатные агенты - я знаю только один - отложенное удаление файлового кеша (который запускается для очистки кеша каталога при изменении элемента каталога каждую секунду). Но это только для файлового, я бы все равно рекомендовал мемкеш. Все остальные агенты имеют достаточно большой период запуска (несколько минут и более).
Антон, подскажите пожалуйста, можно ли и как, для одного определенного агента сделать свое отдельное расписание крона.
Поясню зачем мне это надо:
Один из агентов выполняет импорт прайслиста.
Прайс лист огромный ~1,3 млн. строк. И за 10 минут не успевает загрузится весь, не то что за 1 минуту.
Мое предположение:
Создать файл аналогичный cron_events.php , но в место
Указать функцию агента.
И на этот файл создать отдельное расписания крона.
вместо всех
Можно ли как - то запустить импорт вручную и добиться чтобы импорт картинок прошел успешно?
Если кто не понял вопроса, то что мне нужно написать? какой скрин предоставить?
Зачем нужно создавать файл рядом с ини?
практически то же самое лежит тут