Не выполняется агент
Но как только я создаю агент:
Она не выполняется.
Функция размещена в /bitrix/php_interface/init.php и по идеи должны быть доступна всегда, однако такое ощущение, что агент ее просто не видит.
Хм. А зачем?
Функция у меня в /bitrix/php_interface/init.php, он по идеи подключается по любому.
Сказать, что не доступна какая-то функция используемая в ней, тоже нельзя, потому, что даже в таком виде:
агент ее не запускает.
Да и страница на которой я тестирую ее выполнения выглядит так:
Ах вот как? Агент запускается в другом окружении?
Значит добавление CModule::IncludeModule(‘iblock’) в функцию или просто указание моделя iblock в параметре агента Модуль, должно решить проблему?
Но однако же и функция
Конечно. Оно не обновляется. Это не правильно? (Я до сегодняшнего дня агенты и не использовал ни разу.)
Да и моя функция не работает даже с добавлением iblock
| Цитата |
|---|
| Если функция-агент принадлежит модулю, то перед ее выполнением, этот модуль будет автоматически подключаться, а именно будет подключаться файл /bitrix/modules/ ID модуля /include.php , в этом случае необходимо убедиться, что функция-агент будет доступна после подключения этого файла. Если функция-агент не принадлежит ни одному из модулей, то ее необходимо разместить в файле /bitrix/php_interface/init.php . Данный файл автоматически подключается в прологе. |
Способ есть — сначало отладить функцию, запускаемую агентом БЕЗ агента) Это единственный вариант.
Ну и еще можно писать сообщения в лог файл .
У меня локально агент отработал раз 10 и внезапно перестал. Время запуска давно прошло, интервал 10 сек.
Как обычно, пришлось лезть в кишки битрекса -__-
Агенты для запуска выбираются в месте bitrix/modules/main/classes/mysql/agent.php:121
смотрим этот массив и попал ли наш агент в него
Если нет — то находим наш агент в таблице `b_agent` и удаляем у него `DATE_CHECK`
Так же если не запускаются агенты, то может нужно удалить из /bitrix/php_interface/dbconn.php установку константы
Если всё равно не запускаются — изменить в таблице `b_option` у записи с NAME `check_agents` на `Y`.
Изначально проверить пытаются ли вообще запуститься можно в файле bitrix/modules/main/include.php:259
Всё это относится к агентам, отрабатываемым по хитам. Может быть по крону тоже, не проверял. У меня вышло так — на сервере они работают на кроне, настраивал не я, а локально не хочу заморачиваться с кроном, решил сделать на хитах, и вот пришлось решать почему не работают.
Про `check_agents` спасибо https://pai-bx.com/wiki/1c-bitrix/2327-return-agents-on-hits/
До этого бывало сталкивался пару раз с тем, что агент переставал работать. Я начинал копаться почему, но потом он внезапно начинал работать и я успокаивался. Видимо это было связано именно с `DATE_CHECK`, ибо в этот раз она почему-то стояла где-то на полчаса больше -___- Почему-то так сильно много ибо в коде она сама иногда выставляется на 10 мин.
Выяснилось что `DATE_CHECK` остаётся если произошла какая-то ошибка! Приходится вручную удалять её -___-
Для удобства, для меня проще был узнать отрабатывает агент или нет — создавать файл в той же директории что и сам скрипт запуска агента, сделал так:
Источник
Созданный агент не запускается по времени
Созданный агент не запускается по времени.
Собственно агент который я добавил и функцию для которого объявил в init.php не запускается на выполнение по расписанию на локальной машине. В чем может быть ошибка вот параметры агента
ID: 41
Функция агента: My_Agent_F unction();
[ID] Логин: Система
Активность: Да
Следующий запуск: 27.04.2012 17:15:00
Интервал: 86400
Вот файл init.php
| Цитата |
|---|
| Сергей Фролов пишет: я запускаю бизнес процесс, мне его нужно запускать по расписанию |
| Цитата |
|---|
| Николай Семенцов пишет: Проблема такая же, не запускается агент |
Вот код агента он находится в файле init.php
function Postponedel() <
CModule::IncludeModule(«iblock»;);
GLOBAL $DB;
$iblock = 25; // блок с отложенным товарами
$arFilter = array(
«IBLOCK_ID» => intval($iblock),
» date($DB->DateFormatToPHP(CLang::GetDateFormat(«SHORT»;)), time()-(30*(24*60*60)))
);
$arSelect = array(
«ID»,
);
$db_elements = CIblockElement::GetList(array(), $arFilter, false, false, $arSelect);
// $db_elements->SetUrlTemplates($arParams[«DETAIL_URL»]);
$arrPostponeId = array();
while ($arElement = $db_elements->GetNext())
<
CIBlockElement::Delete($arElement[‘ID’]);
>
return «Postponedel();»;
>
Настройки агента в системе битрикс
ID: 207
Функция агента: Postponedel();
[ID] Логин: Система
Активность: Да
Следующий запуск: 15.07.2012 01:01:25
Интервал: 86400
Время следующего запуска ставлю наперед но все равно нет запуска скрипта, а если я просто ставлю на страницу Postponedel(); то скрипт отрабатывает. Хостинг timeweb.ru , стандартные агенты работают хорошо.
В чем может быть проблема ?
Та же ерунда, агент никак не хочет запускаться.
В доке все написано так мутно, вот например:
1. Зачем нужен datecheck? Есть же next_exec который указывает на дату запуска, смысл не ясен.
2. От какого времени пляшет запускалка агентов? Серверного? PHP? Локальной машины с которой ставится агент?
3. Где можно увидеть лог запусков анентов и понять почему тот или иной не запускается?
4. Что происходит если дата запуска просрочена? Тоесть хит был после или cron задание запустилось позже необходимого времени
5. В доке четко не прописано как тестировать агент, если он не запускается
Сейчас имею проблему, создается агент программно и не запускается:
Продублирую ибо в поиске есть 2 темы.
У меня локально агент отработал раз 10 и внезапно перестал. Время запуска давно прошло, интервал 10 сек.
Как обычно, пришлось лезть в кишки битрекса -__-
Агенты для запуска выбираются в месте bitrix/modules/main/classes/mysql/agent.php:121
смотрим этот массив и попал ли наш агент в него
Если нет — то находим наш агент в таблице `b_agent` и удаляем у него `DATE_CHECK`
Так же если не запускаются агенты, то может нужно удалить из /bitrix/php_interface/dbconn.php установку константы
Если всё равно не запускаются — изменить в таблице `b_option` у записи с NAME `check_agents` на `Y`.
Изначально проверить пытаются ли вообще запуститься можно в файле bitrix/modules/main/include.php:259
Всё это относится к агентам, отрабатываемым по хитам. Может быть по крону тоже, не проверял. У меня вышло так — на сервере они работают на кроне, настраивал не я, а локально не хочу заморачиваться с кроном, решил сделать на хитах, и вот пришлось решать почему не работают.
Про `check_agents` спасибо https://pai-bx.com/wiki/1c-bitrix/2327-return-agents-on-hits/
До этого бывало сталкивался пару раз с тем, что агент переставал работать. Я начинал копаться почему, но потом он внезапно начинал работать и я успокаивался. Видимо это было связано именно с `DATE_CHECK`, ибо в этот раз она почему-то стояла где-то на полчаса больше -___- Почему-то так сильно много ибо в коде она сама иногда выставляется на 10 мин.
Выяснилось что `DATE_CHECK` остаётся если произошла какая-то ошибка! Приходится вручную удалять её -___-
Для удобства, для меня проще был узнать отрабатывает агент или нет — создавать файл в той же директории что и сам скрипт запуска агента, сделал так:
Источник
Не работают агенты через cron
Установил на чистый сервер Bitrix virtual appliance version 7.4.3
CentOS Linux release 7.8.2003 (Core)
Агенты при этом не выполняются. Дополнительно добавил задание в крон по инструкции https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2943
Но агенты не выполняются, проверяют через Настройки > Настройки продукта> Агенты.
Подскажите пожалуйста, как исправить?
Крон 100% отрабатывает. Проблема не в нем. Пробовал добавить в /home/bitrix/www/local/php_interface/cron_events.php строку с mail() php, письмо по запуску с cron пришло. Что-то с выполнением периодических агентов. Проблем с письмами нет, настроено.
указать
define(«BX_CRONTAB_SUPPORT», true);
define(«BX_CRONTAB», true);
Возможно вы не полностью настроили выполнение ВСЕХ агентов на кроп. А для почты достаточно просто
указать
define(«BX_CRONTAB_SUPPORT», true);
define(«BX_CRONTAB», true);
вот что там. должно быть
*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php
| Цитата |
|---|
| Евгений Костюк написал: указать define(«BX_CRONTAB_SUPPORT», true);define(«BX_CRONTAB», true); |
пробовал, результат тот же
| Цитата |
|---|
| Евгений Костюк написал: А еще нужно помнить что крон нужно запускать. от пользователя bitrix. если вы от рута редактируете крон, то crontab -e -u bitrix |
именно от bitrix работает
| Цитата |
|---|
| Евгений Костюк написал: вот что там. должно быть*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.phpа у вас*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php |
| Цитата |
|---|
| Евгений Костюк написал: а сам почтовый ящик вы настроили? Это меню виртуальной машина пункт 6, потом 4 |
| Цитата |
|---|
| Александр Гусев написал: Обобщенное решение для выполнения всех агентов из-под cron |
| Цитата |
|---|
| Александр Гусев написал: Обобщенное решение для выполнения всех агентов из-под cron |
не помогает. Агенты замерли, хоть крон и отрабатывает задачи.
На днях продлили лицензию битрикса и обновили, в том числе vmbitrix и php до 7.4.16. После чего перестал работать крон.
В логах была ошибка
Почта настроена. Отправка через mail() происходит.
Источник
Устранение ошибок CMS Битрикс
Опция «Проверка системы» в CMS Битрикс позволяет проверить соответствие настроек хостинга требованиям CMS и вашего сайта. При запуске этой опции на хостинге Timeweb, Битрикс, как правило, приводит несколько ошибок и замечаний. В этой статье мы рассмотрим, как их исправить.
Отправка почты
Речь идет о двух параметрах: «Отправка почты» и «Отправка почтового сообщения больше 64Кб».
Уведомление: Ошибка! Не работает
Эта ошибка возникает, если вы используете хостинг на тестовом периоде — до оплаты услуги почта недоступна. Как только хостинг будет оплачен, почта заработает.
Режим работы MySQL
Уведомление: Ошибка! innodb_strict_mode=ON, требуется OFF. Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION
Эта ошибка критична. Она может привести к блокировке запросов к базе данных, что практически означает остановку работы сайта.
Решение:
Необходимо внести изменения в файлы конфигурации Bitrix, в которых задаются параметры базы данных, и указать в них нужные значения. Отредактировать файлы можно, например, с помощью Файлового менеджера.
В файл /public_html/bitrix/php_interface/after_connect.php под уже имеющимися строками и до символов ?> добавьте:
В файл /public_html/bitrix/php_interface/after_connect_d7.php под уже имеющимися строками и до символов ?> добавьте:
После этого проверка Bitrix пройдет успешно.
Размер стека и pcre.recursion_limit
Уведомление: Замечание: Возможны проблемы в работе с длинными строками из за системных ограничений
Это замечание некритично и, как правило, на работе сайтов не сказывается, однако оно может влиять на обработку очень длинного текста, например, если в нем сотни тысяч символов.
Этот параметр влияет на возможность обработки строк регулярными выражениями. Лимит по умолчанию установлен достаточно большой, чтобы можно было обработать практически любой контент на сайте, но для устранения замечания можно дополнительно внести изменения.
Решение:
- Если у вас тариф мощного хостинга, решением будет переключение сайта на PHP 7.4. Это можно сделать в разделе «Сайты» по нашей инструкции.
- Если у вас тариф обычного хостинга или если смена версии PHP не помогла, исправить ошибку, добавьте в файл /public_html/.htaccess строки:
Выполнение агентов на cron
Уведомление: Замечание: Агенты выполняются на хитах, рекомендуется перенести их выполнение на cron
Это замечание некритично. В Битрикс предусмотрен внутренний планировщик задач (агентов). Данное замечание влияет на то, насколько точно по времени сработают запланированные задачи. Грубо говоря, скрипты сайта выполняются, только когда его страницы кто-то посещает. Если нет посещений, то и таймер работать не будет. Cron позволяет полностью решить проблему с планированием задач.
Решение:
Чтобы перенести работу непериодических агентов (и передачу почты) на Сron, необходимо установить константу BX_CRONTAB_SUPPORT .
Для этого добавьте в файл /public_html/bitrix/php_interface/dbconn.php строку:
1. В разделе Crontab нажмите «Добавить новую задачу» и задайте удобное имя для задачи.
2. В пункте «Исполнитель» выберите «Исполняемый бинарный файл».
3. В пункте «Путь до файла» укажите команду следующего вида:
- В /opt/php72/bin/php укажите ту версию php, которую использует сайт. Например, /opt/php74/bin/php ( или /opt/php7.4/bin/php ).
- Вместо /home/u/user/site.ru/public_html укажите корректный путь до папки сайта и замените u и user на первую букву вашего логина и сам логин.
4. В пункте «Периодичность» выберите «Каждую минуту».
Уведомление: Ошибка! Не настроен запуск cron_events.php на cron
Эта ошибка может возникнуть, если в пункте выше вы только добавили константу, но не добавили задачу cron. Без настройки задачи в crontab будет остановлена часть агентов, в том числе с сайта перестанет отправляться почта. Письма будут накапливаться в очередь и отправляться по частям после устранения ошибки.
Решение:
Выполните приведенную выше инструкцию по добавлению задачи cron, и ошибка будет устранена.
Обязательные параметры PHP
Уведомление: Ошибка! Значение max_input_vars должно быть не ниже 10000
Эта ошибка не влияет на работоспособность сайта напрямую, но может отразиться на работе с большими формами в административной панели. При работе с инфоблоками низкое значение параметра max_input_vars может вызвать проблемы с сохранением настроек, поэтому система выделяет эту ошибку как критическую.
Решение:
Необходимо добавить следующую строку в файл /public_html/.htaccess :
Источник