Home » Magento19 June 2012

Magento: Cron Jobs Setup for Custom Module

Cron Job is used to perform any action in a certain interval of time. In a Magento webshop, there are certain tasks that needs cron jobs to be run, i.e. these tasks/actions need to be performed periodically.

Here are some of them:-

– Refreshing Catalog Price Rules
– Sending Newsletters to customers
– Generating Google Sitemaps and submitting it to Google
– Sending Customer Notification about product price change or product back in stock
– Updating currency rates
– Making backups
– Cleaning logs

To setup cron jobs for your custom module, you need to add the following piece of code into the config.xml file of your module.

The cron syntax in the above xml code is */0 0 * * *. This means that the cron job will run daily at midnight.

Some examples of cron syntax are:

*/0 1 * * * = Daily at 1 am
*/0 2 * * * = Daily at 2 am
*/* * * * * = Every time cron is run
*/5 * * * * = Every 5 minutes
*/10 * * * * = Every 10 minutes

The action that you want to perform in your cron job should be kept in the model function specified. From the code above, we see that our desired action code should be kept in the function yourMethod() of the class YourNamespace_YourModule_Model_YourModel.

The cron job tasks are stored in cron_schedule table. There is a ‘status‘ field in this table. The value of this field can be pending, running, success, missed, error.

Initially the status is set as ‘pending’. Pending then changes to ‘running’. From the running state, the status can either become ‘success’ (if the task is finished successfully) or ‘error’ (if there is an exception thrown). If the task fail to run within the configured time value, then the status is set as ‘missed’.

To execute all these configured tasks, the cron.php file located in the Magento root will need to be run periodically, for example every 15 minutes. Basically, this script will check if it needs to run any tasks, and if it needs to schedule any future tasks.

More information about:

– How to setup cron jobs in UNIX/BSD/linux and Windows systems
– Inner workings of Magento Crontab Mechanism
– cron_schedule database table
– Build-in Cron Jobs in Magento

Visit Magento Wiki: How to Set Up a Cron Job

Magento

Get New Post by Email

Find me on

FacebookTwitterGoogle+LinkedInRSS Feed
  • Jack

    Hi,

    We have used your code for set up cron job by module but this is not working of may be we have done something wrong, can you please help us. Below is code we have added for setup cron job.

    Hi Mukesh,

    We have tried this code for set cron job but this is not work for us so can you please help us what mistaken we have did. Below is code we are using.

    1.0.0

    Roor_Test_Block

    Roor_Test_Helper

    Roor_Test_Model

    singleton
    Roor_Test_Model_Product_Observer
    addproduct

    */5 * * * *
    test/etest::testCronjob

  • Muhammad Saeed Khan

    Hi

    My Magento custom cronjob is not able to get register in cron_schedule table. Any idea?