Документация для разработчиков
Темная тема

AddAgent

Описание и параметры

mixed
CAgent::AddAgent(
 string name, 
 string module = "", 
 string period = "N", 
 int interval = 86400, 
 string datecheck = "", 
 string active = "Y",
 string next_exec = "", 
 int sort = 100
)

Метод регистрирует новую функцию-агент. Статический метод.

Параметры

ПараметрОписание С версии
name Строка PHP для запуска агента-функции.
module Идентификатор модуля. Необходим для подключения файлов модуля.
Необязательный. По умолчанию пустой.
period

Если значение - "Y", то очередная дата запуска агента (next_exec) будет рассчитываться как:

next_exec = next_exec + interval
Т.е. при очередном запуске, если прошло уже больше времени чем указано в параметре interval, агент сначала будет запускаться ровно столько раз сколько он должен был запуститься (т.е. столько раз сколько он "пропустил"), а затем, когда next_exec достигнет либо превысит текущую дату, он будет в дальнейшем запускаться с периодичностью указанной в параметре interval. Как правило, подобное используется в агентах которые должны гарантированно запуститься определённое количество раз.

Значение period = "Y" соответствует настройке агента в административной панели Периодичность выполнения: точно в указанное время.

Если значение - "N", то очередная дата запуска агента (next_exec) будет рассчитываться как:

next_exec = дата последнего запуска + interval
Т.е. агент после первого запуска будет в дальнейшем запускаться с периодичностью указанной в параметре interval.

Значение period = "N" соответствует настройке агента в административной панели Периодичность выполнения: через заданный интервал.

Параметр необязательный, по умолчанию - "N".
interval Интервал (в секундах), с какой периодичностью запускать агента.
Необязательный. По умолчанию - 86400 (1 сутки).
datecheck Дата первой проверки "не пора ли запустить агент" в формате текущего языка.
Необязательный. По умолчанию - текущее время.
active Активность агента (Y|N).
Необязательный. По умолчанию - "Y" (активен).
next_exec Дата первого запуска агента в формате текущего языка.
Необязательный. По умолчанию - текущее время.
3.1.4
sort Индекс сортировки позволяющий указать порядок запуска данного агента относительно других агентов для которых подошло время запуска.
Необязательный. По умолчанию - 100.
3.2.9

Возвращаемые значения

При успешном выполнении, возвращает ID вновь добавленного агента, иначе - false. Если агент ничего не возвращает, он удаляется. Как правило он должен вернуть вызов самого себя.

Примеры использования

<?
// добавим агент модуля "Статистика"
CAgent::AddAgent(
    "CStatistic::CleanUpStatistics_2();", // имя функции
    "statistic",                          // идентификатор модуля
    "N",                                  // агент не критичен к кол-ву запусков
    86400,                                // интервал запуска - 1 сутки
    "07.04.2005 20:03:26",                // дата первой проверки на запуск
    "Y",                                  // агент активен
    "07.04.2005 20:03:26",                // дата первого запуска
    30);
?>
<?
// добавим агент модуля "Техподдержка"
CAgent::AddAgent(
    "CTicket::AutoClose();",  // имя функции
    "support",                // идентификатор модуля
    "N",                      // агент не критичен к кол-ву запусков
    86400,                    // интервал запуска - 1 сутки
    "",                       // дата первой проверки - текущее
    "Y",                      // агент активен
    "",                       // дата первого запуска - текущее
    30);
?>
<?
// добавим произвольный агент не принадлежащий ни одному модулю
CAgent::AddAgent("My_Agent_Function();");
?>

<?
// файл /bitrix/php_interface/init.php

function My_Agent_Function()
{
   // выполняем какие-либо действия
   return "My_Agent_Function();";
}
?>
<?
// добавим произвольный агент принадлежащий модулю
// с идентификатором my_module

CAgent::AddAgent(
   "CMyModule::Agent007(1)", 
   "my_module", 
   "Y", 
    86400);
?>

<?
// данный агент будет запущен ровно 7 раз с периодичностью раз в сутки, 
// после чего будет удален из таблицы агентов.

Class CMyModule
{
   function Agent007($cnt=1)
   {
      echo "Hello!";
      if($cnt>=7)
         return "";
      return "CMyModule::Agent007(".($cnt+1).")";
   }
}
?>


© «Битрикс», 2001-2023, «1С-Битрикс», 2023