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

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-2024, «1С-Битрикс», 2024