= Periodic tasks =
'''Periodic tasks''' are programs that are run periodically. They are executed by the [StartTool bin/start --cron] program, which you should run from cron. To do this, run '''crontab -e''' and add a line of the form
{{{
0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron
}}}
Periodic tasks are short-running, but in case they aren't, the 'start' script detect when an instance is still running and won't start another instance.
Your project's periodic tasks are described in its [ProjectConfigFile config.xml] file, with elements of the following form:
{{{
get_load
5 min
[ host.ip ]
[ 0|1 ]
[ 0|1 ]
run_in_ops update_forum_activities.php
1 day
...
}}}
cmd::
The command used to perform the task. Must be a program in the project's /bin directory.
You can run PHP scripts as periodic tasks. These scripts must be in the html/ops/ directory, and can be run with a command of the form
{{{
run_in_ops scriptname
}}}
The script should be executable, and should have the form
{{{
#! /usr/bin/env php
}}}
You must specify the output file for such tasks (otherwise it will go to run_in_ops.out).
host::
Specifies where the daemon should run. The default is the project's main host, as specified in config.xml.
period::
The interval between executions, expressed as a single number (in units of minutes) or a number followed by 'seconds', 'minutes', 'hours', or 'days' (may be abbreviated to unique initial string).
output::
Specifies the output file to output; and by default it is COMMAND_BASE_NAME.out. Output files are in log_X/, where X is the host.
disabled::
Ignore this entry
always_run::
Run this task regardless of whether or not the project is enabled (for example, a script that logs the current CPU load of the host machine).
A project newly created by [MakeProject make_project] has periodic tasks that run the following:
db_dump::
Write [DbDump statistics data to XML files] for export. Recommended period: 1 day.
update_profile_pages.php::
Generate HTML files with lists of links to user profiles, organized alphabetically and by country. Recommended period: a few days.
update_stats::
Update the recent average credit fields of users, teams, and hosts. This is important if you use send personalized [VolunteerRecruit mass emails] or [VolunteerRecruit reminder emails], or use recent credit to enable message-board posting. Recommended period: every few days.
update_uotd.php::
Select a new User of the Day. Period: 1 day.
update_forum_activities.php::
Recompute 'popularity' estimates for threads and posts in the Questions and Answers message boards. Recommended period: 1 hour.
team_import.php::
Import new [TeamImport BOINC-wide teams] from a central repository.
notify.php::
Send notification digest emails to users. Recommended period: 1 day
The XML for these is:
{{{
db_dump -d 2 -dump_spec ../db_dump_spec.xml
24 hours
run_in_ops update_uotd.php
1 days
run_in_ops update_forum_activities.php
1 hour
update_stats -update_users -update_teams -update_hosts
7 days
run_in_ops update_profile_pages.php
24 hours
run_in_ops team_import.php
24 hours
run_in_ops notify.php
1 days
}}}