= 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 statistics data to XML files for export. Details are [DbDump here]. 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.
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_export.php
      
      
        24 hours
      
    
  
}}}