How to Create and Configure Cron Job in Magento 2
Cron jobs play a crucial role in automating and managing tasks in Magento 2, enabling your store to perform actions on a scheduled basis without manual intervention. From updating inventory to sending order emails and generating reports, these automated tasks streamline operations and improve store performance. Knowing how to create and configure cron jobs in Magento 2 ensures that routine tasks are handled efficiently, keeping your store running smoothly and allowing you to focus on more strategic areas of your business.
In this guide, we’ll walk you through the steps to set up and manage cron jobs effectively in Magento 2, enhancing both functionality and user experience.
What is a Cron Job in Magento 2?
A cron job is a scheduled task that runs automatically at specified intervals. In the context of Magento 2, cron jobs are used to handle background tasks such as indexing, sending emails, and generating reports. These jobs run based on a predefined schedule, ensuring that your store performs optimally without manual intervention.
Note
Cron configuration is very important in Magento to set the schedule for many system activities such as reindexing Magento 2, auto-update of currency rates, Magento emails, etc. Only when the configuration is correct, the cron job is active. In case there is an error, this means Magento won’t function as expected.
Why Are Cron Jobs Essential in Magento 2?
Cron jobs are vital because they automate many routine tasks that would otherwise take up valuable time. They help in:
- Automating tasks such as sending abandoned cart emails, generating newsletters, and processing orders.
- Improving performance by running tasks in the background without disrupting the customer experience.
- Reducing human error, as everything is automated and tasks are performed on time.
How Cron Jobs Work in Magento 2
Magento 2 uses a scheduling system where jobs are defined in XML configuration files and scheduled to run at specific intervals. These jobs are executed using the cron service on your server. The Magento cron system ensures that tasks are handled in the correct order based on their priority and timing.
When to Use Magento Cron Jobs?
In a standard Magento store, automated cron jobs efficiently handle numerous repetitive tasks for maintenance and operation. This way will help developers focus on more complex tasks. Here are some specific tasks when you should use Magento Cron Jobs:
-
Sending Newsletter Emails: Schedule cron jobs to send out newsletters to your subscribers.
-
Indexing and Caching: Automate the indexing process to update your store data and cache management for optimal performance.
-
Sitemap Generation: Regularly generate and update your sitemap for search engines.
-
Auto-updates of Currency Rates: Keep your store’s currency rates up to date with automated updates.
-
Catalog Price Rules: Apply catalog price rules at set intervals.
-
Customer Alerts/Notifications: Send out product alerts and stock notifications to customers.
Cron jobs aid ensures these tasks are completed on time without manual intervention, thus saving time and reducing the potential for human error.
How to Create Cron Job in Magento 2
Please follow the guides to start the cron job program as your wish:
-
Create a class within the “Cron” folder
-
Manually setup the cron schedule by using PHP:
bin/magento cron:run
-
Find a log in the
var/log/system.log
after the cron job has run. -
Login to Magento 2 Admin panel, do as the path:
Stores > Configuration > Advanced > System
, then change scheduler settings per cron group. -
Finally, run cron from the command line:
magento cron:run [--group="<cron group name>"]
Now, We will add a custom cron in the HelloWorld module.
Create crontab.xml
File: app/code/Mageplaza/HelloWorld/etc/crontab.xml
Content would be
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job instance="Mageplaza\HelloWorld\Cron\Test" method="execute" name="mageplaza_helloworld_cron">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
group id
is your cron group name. You can run only cron for single group at a time.job instance
is a class to be instantiated (classpath).job method
is the method injob instance
to call.job name
is Unique ID for this cron job.schedule
is the schedule in cron format. The following graph shows what it consists of:
* * * * * command to be executed
| | | | |
| | | | +----- Day of week (0 - 7) (Sunday=0 or 7)
| | | +------- Month (1 - 12)
| | +--------- Day of month (1 - 31)
| +----------- Hour (0 - 23)
+------------- Minute (0 - 59)
In crontab.xml
, we have defined job instance
as Mageplaza\HelloWorld\Cron\Test
. It should be created now.
Create Test.php
File: app/code/Mageplaza/HelloWorld/Cron/Test.php
Content would be:
<?php
namespace Mageplaza\HelloWorld\Cron;
class Test
{
public function execute()
{
$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/cron.log');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info(__METHOD__);
return $this;
}
}
All done, now please flush cache and run magento cron:run --group="default"
from the command line.
To check whether the Cron is working properly, go to var/log/cron.log
of your store and you will see the text Mageplaza\HelloWorld\Cron\Test::execute
in it.
How to Configure Magento 2 Cron Jobs
Configuring Magento 2 Cron Jobs involves several steps to ensure that tasks are scheduled and executed properly. Here’s a guide to help you configure cron jobs in Magento 2:
Magento just temporarily stores cron job data in the cron_schedule table. After a while, this data will be purged. Therefore, it’s necessary to adjust the cron job settings within Magento to preserve this information for a longer duration. Here’s a guide to configuring cron jobs in Magento 2:
Access Cron Configuration:
Go to Stores > Configuration > Advanced > System > Cron (Scheduled Tasks)
.
Note: You’ll find the default cron group and any custom cron job groups from Magento 2 extensions in here.
-
Set Cron Options :Fill out the options for each cron job with your preferred values.
-
Schedule Generation: Determine how often you want cron to generate the schedule in the Generate Schedules Every field.
-
Schedule Timing: Use the Schedule Ahead field to specify how far in advance to schedule cron jobs.
-
Missed Job Handling: Set the time after which a cron job is assigned the Missed status in the Missed if not Run Within field.
-
History Cleanup: Determine how long completed task history should be kept in the History Cleanup Every field.
-
Success History Lifetime: Define the duration for which successful cron jobs should remain in the database in the Success History Lifetime field.
-
Failure History Lifetime: Set how much time for cron jobs with the Error status in the Failure History Lifetime field.
-
Separate Process Option: Decide if you want to run all cron jobs from the group separately by setting Use Separate Process to Yes or No.
-
Save Settings: Remember to **save your settings and repeat the process for other cron job groups if necessary.
For more advanced configurations, such as rescheduling or disabling specific cron tasks, you will need to make code changes. This might involve creating custom modules or editing existing cron configurations in the codebase.
If you’re looking for a step-by-step tutorial or need to understand the code changes required for more advanced cron job configurations, you can refer to the detailed guides available below.
Execute and Schedule Magento Crons
Suppose you don’t need to be tech-savvy to manually run cron jobs from the admin panel. With the Magento 2 Cron Schedule Extension, the process is simplified, making the management of Magento cron tasks straightforward and user-friendly.
Even without technical expertise, you can manually trigger cron jobs from the admin panel by using the Magento 2 Cron Schedule extension. With the Magento 2 Cron Schedule extension, the process is simplified, making the management of Magento cron tasks straightforward and user-friendly.
** Starting with Cron Jobs** :
-
Navigate to
Mageplaza>Cron Schedule> Manage Cron Jobs
in the admin panel. -
Filter through the list to find the cron jobs you want to reschedule or rerun.
** Editing Cron Jobs** :
- Select a cron job to access its editor and adjust the schedule as needed.
** Executing Cron Jobs** :
-
Mark the specific cron jobs you want to run.
-
Choose the
Execute
option from the mass actions dropdown to run them immediately.
** Managing Cron Job Status** :
-
To enable or disable cron tasks, select the desired cron jobs.
-
Use the
Status > Enable/Disable
option from the mass actions.
Magento cron jobs are essential for automating various tasks such as reindexing, updating currency rates, and sending newsletters. Understanding how to configure and run cron jobs benefits developers and store administrators. The process is further streamlined by the ability to monitor the cron job status and set up notifications within the admin panel.
Applications of Cron Job for Magento 2
Several Magento features require at least one Cron Job, which schedules activities to occur in the future. A partial list of these activities follows:
- Catalog price rules
- Newsletters
- Generating Google sitemaps
- Customer Alerts/Notifications (product price change, product back in stock)
- Reindexing
- Private sales (Magento Commerce only)
- Automatic updating of currency rates
- All Magento emails (including order confirmation and transactional)
A great tool to help store admins view, manage, and schedule cron tasks with ease from the store backend (Hyva ready)
Check it out!Final words
As you can see, if Cron Jobs are configured programmatically in Magento 2, your management workload can be reduced greatly, and customers can gain a better experience when navigating through your site.
- How to create a simple Hello World module for Magento 2
- Magento 2 Block Template Ultimate Guides
- How to Create Module in Magento 2
- How to Create Controller in Magento 2
- How to create CRUD Models in Magento 2
- How to Create Magento 2 Block, Layout and Templates
- Configuration - System.xml
- How To Create Admin Menu In Magento 2
- Admin ACL
- Admin Grid
People also searched for
- magento 2 create cron job
- magento 2 add cron job
- create cron magento 2
- magento 2 create cron job programmatically
- magento 2 cron job
- magento 2 cron
- create cron job magento 2
- magento 2 create custom cron job
- magento 2 create cron
- cron job in magento 2
- cron magento 2
- cron job magento 2
- how to create cron job in magento 2
- magento 2 cron jobs
- magento2 cron
- cron in magento 2
- magento 2 custom cron job
- magento 2 cronjob
- magento cron job
- magento 2 cron run command
- cronjob magento 2
- setup cron magento 2
- magento 2 cron setup
- magento 2 cron job setup
- magento 2 cron schedule
- magento cron job setup
- how to setup cron job in magento 2 admin
- magento 2 crontab
- cron run magento 2
- run cron magento 2
- 2.3.x, 2.4.x