function cron_example_cron
Same name in other branches
- 3.x modules/cron_example/cron_example.module \cron_example_cron()
- 7.x-1.x cron_example/cron_example.module \cron_example_cron()
Implements hook_cron().
We implement hook_cron() to do "background" processing. It gets called every time the Drupal cron runs. We then decide what has to happen in response.
In this example, we log a message after the time given in the state value 'cron_example.next_execution'. Then we update that variable to a time in the future.
Related topics
File
-
modules/
cron_example/ cron_example.module, line 29
Code
function cron_example_cron() {
// We access our configuration.
$cron_config = \Drupal::config('cron_example.settings');
// Default to an hourly interval. Of course, cron has to be running at least
// hourly for this to work.
$interval = $cron_config->get('interval');
$interval = !empty($interval) ? $interval : 3600;
// We usually don't want to act every time cron runs (which could be every
// minute) so keep a time for the next run in the site state.
$next_execution = \Drupal::state()->get('cron_example.next_execution', 0);
$request_time = \Drupal::time()->getRequestTime();
if ($request_time >= $next_execution) {
// This is a silly example of a cron job.
// It just makes it obvious that the job has run without
// making any changes to your database.
\Drupal::logger('cron_example')->notice('cron_example ran');
if (\Drupal::state()->get('cron_example_show_status_message')) {
\Drupal::messenger()->addMessage(t('cron_example executed at %time', [
'%time' => date('c'),
]));
\Drupal::state()->set('cron_example_show_status_message', FALSE);
}
\Drupal::state()->set('cron_example.next_execution', $request_time + $interval);
}
}