How to Create and Configure Magento 2 Cron?

Magento 2 Create Cron Job is setting an automatic schedule on time, which is really convenient when you run a Magento 2 store. Why is it such a useful function? For example, a software like website statistics or content management system may require activities at a certain time, but you cannot take care of that manually. That is when creating Cron Job on your web server becomes handy.

And don’t worry about the complex tutorial, as I am here to make it simple and easy for you to follow. Even if you are not tech-savvy, you can still learn it with ease.

Magento 2 Create Cron Job Programmatically

What is a Cron Job?

Cron Job is a great feature by Linux, the free operating system for the user. The cron Job will create a command or a script that is appropriate with the task you want to do. Instead of manual working, the Cron Job allows running automatically in exact time and date. Due to its automation, the Cron Jobs is the perfect choice for repeated projects every date or every week.

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.

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 in job 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:

Cron configuration

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.

Manage cron jobs

** 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** :

Enable or disable cron tasks

  • 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:


Cron Schedule

Cron Schedule for Magento 2

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.

Image Description
Sam is the CEO & co-founder of Mageplaza, a company established to support Magento merchants with different powerful tools and resources. Sam Nguyen is also the CEO & founder of Avada Commerce, an e-commerce solution provider headquartered in Singapore – aiming to support more than a million online businesses to grow and develop.

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
x