<?php

require_once("docutil.php");
page_head("Periodic tasks");
echo "
<b>Periodic tasks</b> are programs that are run periodically.
They are executed by the <a href=tools_start.php>bin/start --cron</a> program,
which you should run from cron.
(To do this, run crontab and add a line of the form
<pre>
0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron
</pre>

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.

<p>
Your project's periodic tasks are described in its
<a href=configuration.php>config.xml</a> file,
with elements of the following form:
";

echo html_text("
    <task>
      <cmd>          get_load        </cmd>
      <output>       get_load.out    </output>
      <period>       5 min           </period>
      [ <host>       host.ip         </host>       ]
      [ <disabled>   1               </disabled>   ]
      [ <always_run> 1               </always_run> ]
    </task>
    <task>
      <cmd>      echo \"HI\" | mail root@example.com     </cmd>
      <output>   /dev/null                             </output>
      <period>   1 day                                 </period>
    </task>
    <task>
    ...
    </task>
");
list_start();
list_item(
    "cmd",
    "The command used to perform the task.
    This command will be run in the &lt;bin_dir> directory."
);
list_item("host",
    "Specifies where the daemon shoulr run.
    The default is the project's main host,
    as specified in config.xml."
);
list_item(
    "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)."
);
list_item(
    "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."
);
list_item(
    "disabled",
    "Ignore this entry"
);
list_item(
    "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)."
);
list_end();
echo "
A project newly created by <a href=make_project.php>make_project</a>
has no periodic tasks.
Here are some programs you might want to run as periodic tasks:
";

list_start();
list_item("db_dump",
    "Write statistics data to XML files for export.
    Details are <a href=db_dump.php>here</a>.
    Recommended period: 7 days."
);
list_item("update_profile_pages",
    "Generate HTML files with lists of links to user profiles,
    organized alphabetically and by country.
    Recommended period: a few days."
);
list_item("update_stats -update_teams -update_users -update_hosts",
    "Update the recent average credit fields of
    users, teams, and hosts.
    This is important if you use send personalized
    <a href=mass_email.php>mass emails</a> or
    <a href=reminder_email.php>reminder emails</a>,
    or use recent credit to enable message-board posting.
    Recommended period: every few days."
);
list_item("update_uotd",
    "Select a new User of the Day.
    Period: 1 day."
);
list_item("../html/ops/update_forum_activities.php",
    "Recompute 'popularity' estimages for threads and posts
    in the Questions and Answers message boards.
    Recommended period: 1 hour."
);

list_end();
page_tail();
?>