You are here

function system_cron in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/system/system.module \system_cron()
  2. 6 modules/system/system.module \system_cron()
  3. 7 modules/system/system.module \system_cron()

Implements hook_cron().

Remove older rows from flood, batch cache and expirable keyvalue tables. Also ensure files directories have .htaccess files.

2 calls to system_cron()
DirectoryTest::testFileCheckDirectoryHandling in core/tests/Drupal/KernelTests/Core/File/DirectoryTest.php
Tests directory handling functions.
GarbageCollectionTest::testGarbageCollection in core/tests/Drupal/KernelTests/Core/KeyValueStore/GarbageCollectionTest.php
Tests garbage collection.

File

core/modules/system/system.module, line 1048
Configuration system that lets administrators modify the workings of the site.

Code

function system_cron() {

  // Clean up the flood.
  \Drupal::flood()
    ->garbageCollection();
  foreach (Cache::getBins() as $cache_backend) {
    $cache_backend
      ->garbageCollection();
  }

  // Clean up the expirable key value database store.
  if (\Drupal::service('keyvalue.expirable.database') instanceof KeyValueDatabaseExpirableFactory) {
    \Drupal::service('keyvalue.expirable.database')
      ->garbageCollection();
  }

  // Clean up any garbage in the queue service.
  $queue_worker_manager = \Drupal::service('plugin.manager.queue_worker');
  $queue_factory = \Drupal::service('queue');
  foreach (array_keys($queue_worker_manager
    ->getDefinitions()) as $queue_name) {
    $queue = $queue_factory
      ->get($queue_name);
    if ($queue instanceof QueueGarbageCollectionInterface) {
      $queue
        ->garbageCollection();
    }
  }

  // Ensure that all of Drupal's standard directories (e.g., the public files
  // directory and config directory) have appropriate .htaccess files.
  \Drupal::service('file.htaccess_writer')
    ->ensure();
  if (\Drupal::config('system.advisories')
    ->get('enabled')) {

    // Fetch the security advisories so that they will be pre-fetched during
    // _system_advisories_requirements() and system_page_top().

    /** @var \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher $fetcher */
    $fetcher = \Drupal::service('system.sa_fetcher');
    $fetcher
      ->getSecurityAdvisories();
  }
}