Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

cron_service

99 sites Security covered
View on drupal.org

The module provides a service collector which executes tagged services on each hook_cron() and allows developers to not write any code to *.module file and have simple time controlling functionality.

The module doesn't have any configurations or UI. It's created for developers and only developers will decide how they will control the execution of their services.

To use the module developer must create a class which implementing \Drupal\cron_service\CronTaskInterface interface (or its descendant) and define it as a service with tag 'cron_service'.

The module provides the following interfaces:
\Drupal\cron_service\CronTaskInterface declares only execute() method which must be the entry point of desired logic. This method will be invoked on every cron run.

\Drupal\cron_service\ScheduledCronTaskInterface additionally declares getNextExecutionTime():int method which should return the timestamp when execute() method should be executed next time. 

\Drupal\cron_service\TimeControllingCronTaskInterface additionally declares shouldRunNow():bool method which is called before every call to execute()  and can prevent the execution by returning FALSE. It can contain additional checks of the current time or the current environment.

A small note

Despite the fact the project is marked as completed, I'm still opened for ideas. Feel free to add feature requests to the issues list if you think this module can be improved in any way.

Activity

Total releases
2
First release
Aug 2025
Latest release
2 months ago
Release cadence
193 days
Stability
100% stable

Releases

Version Type Release date
2.0.5 Stable Feb 10, 2026
2.0.4 Stable Aug 1, 2025