Magento Tutorials

How to Setup Magento Cron Job

cron job magento

Magento is one of the most powerful ecommerce platforms. For example, an option in the platform allows you to set a time scheduler to run multiple activities/tasks automatically. Magento does this through Cron Job, and it also helps in increasing the performance of the Magento store. Automating tasks in Magento involves caching, indexing, generating a sitemap, auto update currency rates, and much more.

So in this tutorial, I am going to teach you how to setup cron job in Magento. If you are using Magento 2, then you can check this guide: How to Setup Cron Job in Magento 2.

Steps required to configure a cron job in Magento:

  • Create and Activate Custom Module
  • Setup Magento Cron Job

Create and Activate Custom Module

Go to the Admin Panel of your store and disable the cache by navigating to System → Cache Management.

Go to app/code/local and create directories as shown below:

directory for cron job in magento

Now you need to configure your custom module so create config.xml in app/code/local/Magenticians/Mymodule/etc and paste the following code in it:

<?xml version="1.0"?>
<config>
<modules>
<Magenticians_Mymodule>
<version>0.0.1</version>
</Magenticians_Mymodule>
</modules>
</config>

Now that the configuration of module is done, just activate it. Create Magenticians_Mymodule in app/etc/modules and paste the following code in it:

<?xml version="1.0"?>
<config>
<modules>
<Magenticians_Mymodule>
<active>true</active>
<codePool>local</codePool>
</Magenticians_Mymodule>
</modules>
</config>

Now, to check if the module is activated, go to System → Configuration → Advanced → Advanced, and check the list of disabled module output.

Setup Magento Cron Job

Go to app/code/local/Magenticians/Mymodule/etc and open the config.xml file. Simply update the code. The final code of config.xml will be:

<?xml version="1.0"?>
<config>
<modules>
<Magenticians_Mymodule>
<version>0.0.1</version>
</Magenticians_Mymodule>
</modules>

<crontab>
   <jobs>
     <custom_cron_task>
       <schedule>
         <cron_expr>*/5 * * * *</cron_expr>
       </schedule>
       <run>
         <model>cron/cron::customtask</model>
       </run>
     </custom_cron_task>
   </jobs>
 </crontab>

 <global>
   <models>
     <cron>
      <class>Magenticians_Mymodule_Model</class>
     </cron>
   </models>
 </global>
</config>

In the code above, we have scheduled a cron job to run every five minutes. In <run>, I have defined a function customtask.

Now create Cron.php in app/code/local/Magenticians/Mymodule/Model and paste the following code in it:

<?php

class Magenticians_Mymodule_Model_Cron
{
 public function customtask()
 {
   // send email
   $mail = Mage::getModel('core/email')
    ->setToEmail('[email protected]')
    ->setBody('Body of the Automated Cron Email Goes Here')
    ->setSubject('Subject: Cron Task (every 5 minutes) '.date("Y-m-d H:i:s"))
    ->setFromEmail('[email protected]')
    ->setFromName('Your Store Name')
    ->setType('html');
   $mail->send();
 }
}

And you’re all done! Just add this line in your crontab file:

*/5 * * * * sh /path/to/your/magento/store/cron.sh

Note: Don’t forget to replace /path/to/your/magento/store with the actual path of your Magento installation.

Final Words:

Magento cron job is a great way to automate multiple tasks. After following this tutorial you should be able to setup a cron job in Magento. If you have any confusion or facing any issues about setting up Magento cron job, drop your comment below!

Frequently Asked Questions

Q1. What are the common mistakes of Magento cron job?
While setting up Magento cron job, sometimes people do following mistakes:

1. PHP Installed on other Directory
On running the following instruction for Magento Cron job you may face error as in your case PHP is installed on some other directory:
*/5 * * * * sh /path/to/your/magento/store/cron.php
To avoid this issue, run this instruction as it will search for PHP interpreter itself:
*/5 * * * * sh /path/to/your/magento/store/cron.sh

2. Use Correct Email Address
Make sure you have added correct email address of both sender and receiver to setup Magento cron job:

setToEmail(‘[email protected]’)
setFromEmail(‘[email protected]’)

If any error occured in the execution of Magento cron job, you will be notified via email with complete details.

Q2. Which cron script is best to run? cron.php or cron.sh?
This is the most very common confusion, cron.php and cron.sh both scripts used for the same purpose but sometimes you can face error in running cron.php script due to the PHP installed on some different path. Whereas on running cron.sh it will search PHP interpreter by itself. So its better to use cron.sh rather cron.php for setting up Magento cron job.


Subscribe Newsletter

Subscribe to get latest Magento news

40% Off for 4 Months on Magento Hosting + 30 Free Migration