In the previous topics, we explored the Queue API and the Batch API. Both allow us to process work safely and at scale. Now we move to another core backend mechanism in Drupal: the Cron API.
Cron is responsible for scheduled and automated tasks. It allows Drupal to run backend logic at defined intervals without a user triggering it.
Cron is commonly used for:
- Processing queues
- Cleaning temporary data
- Sending scheduled emails
- Synchronizing external systems
- Running maintenance tasks
This topic continues the learning-by-building approach using the same weeklydrupal_demo module.
By the end of this article, you will understand:
- What cron is in Drupal
- How cron is triggered
- How to implement
hook_cron() - How cron interacts with queues
- Best practices for scheduled backend processing
1. What Is Cron
Cron is a scheduled task runner.
In Drupal, cron:
- Runs at configured intervals
- Executes registered cron hooks
- Processes queue workers
- Performs system maintenance
In simple terms:
Cron = automatic backend execution at scheduled times
2. How Drupal Cron Is Triggered
Drupal cron can be triggered in several ways:
- Manually via the admin UI
- Using Drush (
drush cron) - Through system cron (server-level cron job)
- Via external monitoring services
In production environments, cron is usually executed by the server on a schedule.
3. Implementing hook_cron()
To add cron logic in our weeklydrupal_demo module:
File: weeklydrupal_demo.module
/**
* Implements hook_cron().
*/
function weeklydrupal_demo_cron() {
// Example: create a simple log entry.
\Drupal::logger('weeklydrupal_demo')->notice('Cron executed for WeeklyDrupal demo module.');
}
What is happening
- Drupal automatically calls this function when cron runs
- Function name must start with module name
- No routing or controller is required
4. Cron and Queue Processing
When cron runs:
- Drupal executes all
hook_cron()implementations - Drupal processes queue workers
This is why the Queue API depends on cron for background execution.
Example flow:
- Controller pushes queue items
- Cron runs later
- QueueWorker processes items
Cron connects deferred work to execution.
5. Safe Cron Design
Cron should:
- Run quickly
- Avoid heavy memory usage
- Push large work to queues
- Avoid blocking operations
Bad pattern:
- Looping through thousands of entities inside
hook_cron()
Good pattern:
- Identify work
- Push to queue
- Let queue workers process gradually
6. Example: Cron Adding Queue Items
Instead of processing directly in cron:
function weeklydrupal_demo_cron() {
$queue = \Drupal::queue('weeklydrupal_demo_queue');
for ($i = 1; $i <= 5; $i++) {
$queue->createItem([
'title' => 'Cron generated article ' . $i,
'rating' => 3,
]);
}
}
This keeps cron lightweight.
7. Cron Timing and Configuration
Cron frequency is configurable in Drupal settings.
Important considerations:
- Too frequent → unnecessary load
- Too infrequent → delayed processing
Balance depends on project requirements.
8. Logging and Monitoring Cron
Good practice:
- Log important cron actions
- Monitor failures
- Track execution time
Example:
\Drupal::logger('weeklydrupal_demo')->info('Cron processed 5 items.');
Logging helps with production debugging.
9. Cron in Enterprise Architecture
In enterprise environments:
- Cron may run every 5–15 minutes
- Queue workers handle heavy processing
- Monitoring tools track failures
- Multiple servers coordinate cron execution
Cron becomes part of infrastructure design.
10. Common Mistakes to Avoid
- Doing heavy processing directly in
hook_cron() - Not handling exceptions
- Forgetting to configure server-level cron
- Assuming cron always runs automatically
Cron reliability must be verified in production.
11. Learning by Building: weeklydrupal_demo
To extend our module:
- Add
hook_cron()implementation - Push items to queue
- Let QueueWorker create nodes
- Monitor via logs
This connects:
- Cron API
- Queue API
- Entity CRUD
- Logging system
12. Why Cron API Matters
Understanding Cron API allows you to:
- Automate backend tasks
- Schedule system maintenance
- Connect queues to execution
- Build reliable background workflows
Cron is a foundational piece of Drupal backend automation.