Agents is the technology which allows running PHP functions (agents) at the specified time interval.
When a page starts execution (before the OnPageStart event) the system automatically checks for pending agents and executes them if required.
Note
The agent run time precision depends on the site
traffic density and uniformity. If you need to precisely run any PHP function at
the time specified, you should use the system cron
utility, which is supplied by most of hosting providers.
To run the agent at the specified time, the calling code should register it in the system using the method CAgent::AddAgent. You can unregister the agent function by calling CAgent::RemoveAgent.
If the agent function is a member of a module, that module will be automatically included which involves including the file /bitrix/modules/module ID/include.php. If this is the case, you have to ensure that the agent function is available after the above mentioned file is included.
If the agent function is not a member of a module, it should be placed in the file /bitrix/php_interface/init.php. This file is automatically included in the prologue.
The following should be considered when creating agent functions.
$USER of the CUser
class is not available in the agent function. If you intend to use this
object, place the following code prior to calling any of the CUser
class methods:global $USER;
if (!is_object($USER))
$USER = new CUser;
<?
// add agent of the Statistics module
CAgent::AddAgent(
"CStatistic::CleanUpStatistics_2();", // function name
"statistic", // module ID
"N", // number of executions is not critical
86400, // time out is 24 hours
"07.04.2005 20:03:26", // time of the first check
"Y", // agent is active
"07.04.2005 20:03:26", // time of the first execution
30);
?>
<?
// add agent of the Techsupport module
CAgent::AddAgent(
"CTicket::AutoClose();", // function name
"support", // module ID
"N", // number of executions is not critical
86400, // time out is 24 hours
"", // time of the first check; use current time
"Y", // agent is active
"", // time of the first execution; use current time
30);
?>
<?
// add an agent which is not a member of any module
CAgent::AddAgent("My_Agent_Function();");
?>
<?
// file /bitrix/php_interface/init.php
function My_Agent_Function()
{
// perform any action
return "My_Agent_Function();";
}
?>
<?
// add an agent of my_module
CAgent::AddAgent(
"CMyModule::Agent007(1)",
"my_module",
"Y",
86400);
?>
<?
// execute this agent 7 times, once per 24 hours,
// and unregister it afterwards.
Class CMyModule
{
function Agent007($cnt=1)
{
echo "Hello!";
if($cnt>=7)
return "";
return "CMyModule::Agent007(".($cnt+1).")";
}
}
?>
| © 2001-2005 Bitrix | Bitrix Site Manager - Content Management & Portal Solutions |