Chris@0: /** Chris@0: * Implements hook_cron(). Chris@0: */ Chris@0: function {{ machine_name }}_cron() { Chris@0: // Short-running operation example, not using a queue: Chris@0: // Delete all expired records since the last cron run. Chris@0: $expires = \Drupal::state()->get('mymodule.last_check', 0); Chris@0: \Drupal::database()->delete('mymodule_table') Chris@0: ->condition('expires', $expires, '>=') Chris@0: ->execute(); Chris@0: \Drupal::state()->set('mymodule.last_check', REQUEST_TIME); Chris@0: Chris@0: // Long-running operation example, leveraging a queue: Chris@0: // Queue news feeds for updates once their refresh interval has elapsed. Chris@0: $queue = \Drupal::queue('aggregator_feeds'); Chris@0: $ids = \Drupal::entityManager()->getStorage('aggregator_feed')->getFeedIdsToRefresh(); Chris@0: foreach (Feed::loadMultiple($ids) as $feed) { Chris@0: if ($queue->createItem($feed)) { Chris@0: // Add timestamp to avoid queueing item more than once. Chris@0: $feed->setQueuedTime(REQUEST_TIME); Chris@0: $feed->save(); Chris@0: } Chris@0: } Chris@0: $ids = \Drupal::entityQuery('aggregator_feed') Chris@0: ->condition('queued', REQUEST_TIME - (3600 * 6), '<') Chris@0: ->execute(); Chris@0: if ($ids) { Chris@0: $feeds = Feed::loadMultiple($ids); Chris@0: foreach ($feeds as $feed) { Chris@0: $feed->setQueuedTime(0); Chris@0: $feed->save(); Chris@0: } Chris@0: } Chris@0: }