<<

NAME

MT::TaskMgr - MT class for controlling the execution of system tasks.

SYNOPSIS

    MT::TaskMgr->add_task($task);

    MT::TaskMgr->run_tasks;

DESCRIPTION

MT::TaskMgr defines a simple framework for the execution of a group of runnable tasks (individually declared as MT::Task objects). Each task is executed according to their defined frequency. Tasks that fail are logged to MT's log table.

ABOUT TASKS

Movable Type, being a publishing framework, can benefit greatly by having a system of tasks that can be run "offline". Unfortunately, many MT users don't have the luxury of scheduling these tasks using "cron" or other similar facilities some servers provide. To satisfy everyone, the task framework introduced here allows MT and third-party plugins to register tasks that can be executed whenever the task subsystem is invoked. This can happen a number of ways:

  • By a script: tools/run-periodic-tasks

    For those that do have a "cron" system, they can continue to run the tools/run-periodic-tasks script provided with Movable Type. This script now invokes the task subsystem to execute all available tasks instead of just the one for publishing scheduled posts.

  • By fetching an activity feed

    With the activity feeds MT serves, it will invoke the task subsystem first, then return the feed. This allows users without access to cron service to run scheduled tasks. Note however, that this mode is reliant upon the feed being pulled by some client. If the feed is not being accessed, then the tasks won't run either. A user can utilize a feed-reading online service to achieve "24x7" task service to keep their tasks running smoothly.

  • Other requests

    Some tasks, such as the expiration of junk records, may be conditionally executed. Junk feedback record expiration is a MT-defined task that executes when tasks are run, and also when a new feedback record is scored as junk.

Tasks are an excellent way to maximize MT performance and user experience. For example, a plugin that may need to retrieve or synchronize data with a remote server may choose to operate from a cache that is periodically kept up to date using a registered task.

METHODS

MT::TaskMgr->add_task($task_obj)

MT::TaskMgr->add_task(\%task)

Registers a new MT::Task object. If this method is called with a hashref, a MT::Task will be constructed using that data.

MT::TaskMgr->run_tasks

Runs all available pending tasks. If an instance of the TaskMgr is already found to be running (through use of a physical file lock mechanism), the process will abort.

MT::TaskMgr->instance

Returns the TaskMgr singleton.

CALLBACKS

PeriodicTask

Prior to running any registered tasks, this callback is issued to allow any registered MT plugins to add additional tasks to the list or simply as a way to signal tasks are about to start. This callback sends no parameters, but it is possible to retrieve the active MT::TaskMgr instance using the instance method.

AUTHOR & COPYRIGHTS

Please see the MT manpage for author, copyright, and license information.

<<