Goal of this article is to find a way to add sort order for cron jobs in Magento.

We should do rewrite of Mage_Cron_Model_Resource_Schedule_Collection.

Add a code in config.xml of our module (Webinse_Sortcron):

<?xml version="1.0" encoding="UTF-8"?>

Create a file Webinse/Sortcron/Model/Resource/Cron/Schedule/Collection.php.

<?php class Webinse_Sortcron_Model_Resource_Cron_Schedule_Collection extends Mage_Cron_Model_Resource_Schedule_Collection {}

Here we should override the method:

public function getIterator()
    $cron_jobs = $this->_items;
    foreach ($cron_jobs as $job) {
        if ($job->getJobCode() == 'job_code') {
        } else {
    return uasort($cron_jobs, array($this, 'sortJobs')) ? new ArrayIterator($cron_jobs) : new Array Iterator($this->_items);
public function sortJobs($a, $b)
    if ($a->getSortOrder() == $b->getSortOrder()) {
        return 0;
    return ($b->getSortOrder() < $a->getSortOrder()) ? -1 : 1;

In the line 6 we set the highest priority to our task ('job_code'). In line 12 we should sort in descending order and it returns the resulting array. In line 15 you can see a sorting function.

Once that's such a small fixes we have an opportunity to add sort order for cron jobs in Magento. Now they will be executed in the order in which we need.