How to Setup Cron Job in 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 store. Automating tasks in Magento involves caching, indexing, generating 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 setup a cron job in Magento:

  • Create and Activate Custom Module
  • Setup 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 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 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('user@email.com')
    ->setBody('Body of the Automated Cron Email Goes Here')
    ->setSubject('Subject: Cron Task (every 5 minutes) '.date("Y-m-d H:i:s"))
    ->setFromEmail('admin@example.com')
    ->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:

After following this tutorial you should be able to setup a cron job in Magento. If you have any confusion or would like to add something to the tutorial, use the comment box below!

About Author

Syed Muneeb Ul Hasan is an expert in PHP and Magento, he prefers to educate users in implementing and learning Magento. When not working, he loves to watch cricket.

Leave A Reply