Cron jobs are supposed to be the smartest and simplest way to automate things on a Linux server, and they are to some extent. However, its design, deeply rooted on the darkest corners of the Linux kernel, designed by the deep minds that created Linux itself, doesn't always present itself as obvious to us, marketers (or to any other kind of Linux Dummies), that's probably why soooo many people have issues with cron jobs. Yes, maybe this is something that should be solved within the Mautic interface, maybe someday... in the meantime, let's try to tackle this problem down, in a way even a marketer can do it :-)
What are Mautic cron jobs?
Technically there aren't Mautic cron jobs per se, what we all use are Mautic commands that we happen to trigger using a cron tab.
A Mautic command is an action or series of actions found within the Mautic code, these commands can be triggered from any line of code within Mautic or via your own code, also directly on the console or, via cron jobs of course.
Cron jobs are a way to schedule tasks in Linux, it´s basically a list of tasks to be executed at certain times, so yes it´s kind of an alarm clock which instead of ringing, runs a command in the server when the time is right.
What we call Mautic cron jobs are in fact a Mautic command run by the cron scheduler at predefined intervals.
In order to be able to properly set the Mautic cron jobs for your specific server/hosting, there are 3 variables that you need to solve first, we will divide the problem into these 3 variables and in the end we will wrap it all, let's get started!
1st variable. The Mautic command:
This is the easiest one to solve, cause you can find the right answer everywhere, these are the basic commands that are needed to run Mautic:
2nd variable. The path:
Now, to be able to run these commands you need to tell ¨cron¨where the scripts you want to run, the Mautic commands, are actually found in your own server, here the thing gets more complicated because every OS has its own default path, every service provider will also add some extra folders (or not) and if you are using any sort of panel, well, no comment. But fear not!
Cause my good friend Robert Went gave me an idea and we've both worked tirelessly to give you all a universal solution to this problem. To successfully complete this project we had to work for literally thousands of... well, milliseconds. Here's the code and when you run it it will tell you your path and will give you an example that is very likely going to be your full cron command:
<?php echo 'Your Path is: ';echo $_SERVER['DOCUMENT_ROOT']; echo '/app/console'; echo ' and your cron jobs will PROBABLY be: * * * * * php ';echo $_SERVER['DOCUMENT_ROOT']; echo '/app/console mautic:segments:update'; ?>
To use this little script you first need to create a new file on your server, you can do this within the Linux console by using the nano text editor, or you can create the file on your desktop and later upload it to your server.
Call the file "rootpath.php" (or whatever you want) and copy these 4 lines into it, then save it and upload it to your Mautic folder (using ftp for example).
Now open your web browser and point it to your Mautic installation, the proper URL to run this script is almost the same one you normally use to access your Mautic installation, but you will need to delete anything that you find after the domain name (probably "s/dashboard" or maybe "s/login") and add "rootpath.php" after that.
It should look something like this http://mauticsubdomain.yourdomain.com/rootpath.php (if you installed your Mautic copy on a subdomain)
or like this http://www.yourdomain.com/mauticfolder/rootpath.php (if you installed Mautic on a folder)
When you reach this new PHP file you just created, it will automatically return the current path to the Mautic commands in your own server.
Take note of the path showing in your browser and then delete this file you've just created, we don't want anyone else knowing about your server's path...
3rd variable. The timing:
The timing is the last variable, or should I say the first? There are different ways to set this up but for simplicity sake we'll just use * * * * *
I'm not going to discuss the details about cron job timings in this post, I'll write a new post soon explaining how to properly "time" your cron jobs, for now you just need to know that * * * * * means every minute and that you need to add "PHP " (notice the extra space) after that so your server knows how to run the rest of the command.
Let's put it all together!
We've done the work, and now it's time to reap the rewards...
Every cron job is basically built with the same parts, your cron jobs will have 3 parts as shown below:
* * * * * PHP +Path +Command
The Path is what you got in the second step and the commands are the ones listed in the first step
so, let's say you ran the script and your path was "/var/www/html/"
Then your cron jobs would be like this:
* * * * * PHP /var/www/html/ mautic:segments:update
* * * * * PHP /var/www/html/ mautic:campaigns:update
* * * * * PHP /var/www/html/ mautic:campaigns:trigger
Notice there are spaces all over the place, you need to respect every space or you will get in trouble.
Install your cron jobs!
If you run Mautic on a VPS and logically have access to your server via ssh, you now can add these commands to your crontab, for that just log into your server via SSH and type:
sudo crontab -e
If this is the first time you edit your crontab it will ask you to choose an editor, (choose "nano" it's probably the simplest one to get started with).
You can now write your commands on the editor, it doesn't really matter where but you usually add new stuff at the end of the file.
If you are using some shared hosting or a control panel, you might not have direct access to your crontab, here I can't help you cause each provider and each panel has its own ways of doing things, if that is the case, you will have to ask your service provider for instructions.
You might also be interested in these other posts:
Mautic Self Hosted Best Practices.
Please Stop Using Bitnami and Cpanel to Install Mautic.
Download Mautic: Which Version to Use?
Mautic installation in 7 min. with PHP 7.2 on Ubuntu 18.04
Mautic Cron Jobs: Which Ones to Use.
Install Mautic Plugin for dummies.
- Last updated on .
- Hits: 1562