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