To help your application run more efficiently, you must conduct regular website maintenance. You can automate maintenance tasks or jobs to run at scheduled intervals using the Scheduled Jobs page in the Cloud Platform user interface. This functionality is sometimes referred to as a cron job. For more information about why you must run cron jobs regularly, see Cron automated tasks overview.
Scheduled jobs are specific to the environment where they’re created. Although you can’t create a job executing a command across several environments based on the same schedule, you can create a job for each environment, with each job using the same command line and schedule.
You must use the Scheduled Jobs page for scheduled jobs and not the default Drupal cron. Compared to Drupal cron, using the Scheduled Jobs page is more reliable, and provides support for adding extensive and integrated logging for Cloud Platform applications.
Disabling Drupal’s automated cron
By default, Drupal cron (also known as poor man’s cron) is enabled for websites. Acquia recommends you disable Drupal cron and rely on the Cloud Platform functionality for running scheduled jobs to ensure that they will run on the schedule you specify. By contrast, Drupal’s default cron functionality is only triggered by HTTP requests and can unnecessarily keep PHP processes running for a long time, potentially causing elevated resource utilization or slower site performance. Disabling Drupal cron also enables you to avoid the performance reduction on page requests. For more information, see Automated Cron.
To disable Drupal cron:
- Sign in to your Drupal website as an administrator.
- Go to Configuration > System > Cron (
http://[site_URL]/admin/config/system/cron
). In the Run cron every list, click Never.
- Click Save configuration.
- Uninstall the Automated Cron Drupal module.
Creating scheduled jobs
To create a scheduled job for an environment:
- Sign in to the Cloud Platform user interface.
- Select an application and an environment.
- Click Scheduled Jobs.
Click Add Job to add a scheduled job.
- In the Create a new scheduled job on [env] dialog, enter a descriptive name for the job in the Job name field.
In the Command field, enter the command you want Cloud Platform to routinely run for the environment. You can enter any commands allowed from an SSH connection to the environment, as long as they meet the limits and special considerations for scheduled jobs.
Select how often you want to run the command from the menus in the Command frequency section:
- Every X minute, where X is the number of minutes
- Every hour, at a number of minutes past the hour
- Every day, at a certain time
- Every week, at a certain day of the week and time of day
- Every month, at a certain day of the month and time of day
- Every year, at a certain month, day of the month, and time of day
Alternatively, you can enter the cron frequency as a string. For more information, see Cron time string format.
Click Add.
After you create a new job, Cloud Platform displays the job in the list of scheduled jobs for the environment where it was created.
Using the Cloud Platform wrapper script for Drush cron
For most applications on Cloud Platform, the following basic cron functionality will ensure timely cron execution and essential logging of cron output:
/usr/local/bin/cron-wrapper.sh [site].[env] http://[site_URL]
In this example, you will replace the above placeholders with the following information:
[site]
is the name of your application on Cloud Platform.[env]
is your environment (typically one ofdev
,test
, orprod
).[site_URL]
is your environment’s URL (as listed on the Cloud > Domains page). If you are using Drupal multisite, your cron jobs are specific to each website in the multisite installation. Use the URL of the website in the installation you want to target.
Do not append a cron_key
to the website URL.
The above script will log the output of drush cron
to a file named drush-cron.log
. For example, if your application’s codebase is named mysite
, the log file for the prod environment will be located in the following directory:
Cloud Classic environments:
/var/log/sites/example.prod/logs/web-9876/drush-cron.log.
Cloud Next environments:
/shared/logs/drush-cron.log
Limitations
When creating scheduled jobs, the following limitations apply:
- Commands in scheduled jobs can’t be longer than 255 characters. If you must run a command longer than 255 characters, you must incorporate it by running a shell script you run as a scheduled job.
- The
%
character is a special character in cron commands. If your command uses this special character, be sure to precede it with a backslash (\
). For example:your_log_file_$(date +\%F).log
. - Commands entered should always provide absolute paths to ensure correct execution as shown in the following examples.
- When you use the Acquia cron wrapper, the cron job uses the PHP memory limit for your environment (by default, 128 MB). When you use Drush cron directly, it will use the command line process memory limit, which is 512 MB.
- On Cloud Next:
- You cannot set crons at frequencies of less than 5 minutes. If you run cron more often, configure such jobs to run no more than once every 5 minutes. Otherwise, they may not get completed as frequently as scheduled.
- Your cron task duration must not be more than 3 hours. If your cron job lasts longer than that, it terminates.
- You cannot terminate long-running cron jobs manually through SSH sessions. If you require assistance, create a Support ticket.
- You cannot have more than 5000 processes for scheduled tasks. If you exceed the process limit, the system restarts the service. This interrupts running requests and results in 50x errors for Drupal.
Managing scheduled jobs
Each job you create on the Scheduled Jobs page has links to help you manage the job, which allow you to do the following:
- Disable: Stops the scheduled job from running until you click Enable. Disabled jobs move to the Disabled list that follows the Enabled list.
- Edit: Opens a window allowing you to change the attributes of the scheduled job. After you make your changes, click Edit.
- Remove: Opens a window deleting the scheduled job when you click Remove. If you remove a scheduled job, you can’t recover it, and you must manually recreate it to restore the job.
Dedicated cron infrastructure on Cloud Platform Enterprise
Some Cloud Platform Enterprise subscriptions have a dedicated cron infrastructure due to the particular performance needs of their applications. To configure a scheduled job on a dedicated cron infrastructure, contact Acquia Support. Environments running on Cloud Next technologies have dedicated cron capacity by default.
Security considerations for scheduled tasks
Scheduled tasks are not encrypted. Acquia recommends that scheduled tasks must not include sensitive items such as:
- SSL certificates
- SSH keys
- Login credentials
- API credentials