« Add Scrollbars to Image Popup Windows in Movable Type 4 | Main | How to Export Tags from Movable Type 3.3x »

Movable Type Scheduled Tasks

Movable Type has a scheduled tasks system that is used to perform certain tasks on scheduled basis. Built-in tasks include expiring junk (spam) trackbacks and comments, and posting entries that were scheduled to to published at a certain date / time. Movable Type plugins can also use scheduled tasks, as some of my plugins do (including Visitor Stats Pro, Ajax Rating Pro, and Blog Janitor). One of the benefit of scheduled tasks is to improvement performance and user experience -- resource intensive functions can be run without making admins, authors, and commenters wait while they complete.

Triggering Scheduled Tasks

Scheduled task will only run when they are triggered. This is important. Even if a task is scheduled to run every hour, it scheduled tasks don't get triggered, the task will never run. By default Movable Type will trigger scheduled tasks in the following cases:

  1. You receive a junk (spam) comment or trackback. Note: this will only trigger the 'Junk expiration' task - it won't trigger plugin tasks.
  2. You view or download an XML "activity feed" (These feeds show up on with orange feed links on many screens of the admin MT interface, including entry and comment listings, and activity log).
  3. When the run-periodic-tasks script (found in the 'tools' directory of MT) is run via the command line or via cron.

Testing Scheduled Tasks

Here is an easily method that I use to test scheduled tasks and make sure they are running correctly:

  1. Go to System Overview > Activity Log.
  2. Click the "Activity Feed" link on the right side of the page.
  3. After the XML feed displays, hit the back button.
  4. Now refresh the System Activity Log.
  5. Read the recent log entries. If tasks were just triggered, there should be a message stating that tasks were run, along with the names of those tasks. In addition, some plugin tasks may post custom log messages to the Activity Log, providing more information about the task completed.

Note that in some cases, depending of the task, you may have to rebuild your pages after the task has run, in order to see the results of the task. One example of such a case is my Visitor Stats Pro plugin, in which a scheduled task tallies the page views of each entry, so that they can be displayed in a "Most Read Entries" widget that lists the most popular entries.

Setting Up a Cron Job

To ensure that scheduled tasks get triggered on a regular basis, I recommend setting up a cron job to run the run-periodic-tasks script once per hour. If you are not familiar with setting up cron jobs, please read the following helpful article: Scheduled Postings and Cron Jobs.

Comments (4)

Great article, Mark. For those that don't have the ability to create a cron job, an activity feed subscription is a good alternative. And if you don't want to rely on your computer being online 24 hours a day to fetch that feed, use an online feed reader, like Google Reader or Bloglines.

Also, to clarify -- receiving a new spam message does trigger expiration of junk comments, but does not run all scheduled tasks.

"receiving a new spam message does trigger expiration of junk comments, but does not run all scheduled tasks."

Really? I was under the impression that junk comments/trackbacks would trigger all tasks. Now that I check the code, I see that this is the case. I am going to edit my article to reflect this. Thanks for pointing this out.

gluzd Author Profile Page:

Mark, can you fix permissions on mt-hacks.com? Right now no one can register or contact you.

http://mt-hacks.com/cgi-bin/mt/plugins/MembershipManagement/wf.cgi

Forbidden

You don't have permission to access /cgi-bin/mt/plugins/MembershipManagement/wf.cgi on this server.

Apache/2.0.52 (Red Hat) Server at mt-hacks.com Port 80

gluzd, that problem is fixed, but it was only affecting you (and maybe a few other people). I had blocked an IP range that was being used by a spammer troll, and your IP fell into that range. I have now allowed your IP. Give it a try now.

Post a comment

(If you haven't left a comment here before, your comment may need to be approved before will appear on the entry. Thanks for waiting.)