diff --git a/ReadinessCheckers/CronFrequency.php b/ReadinessCheckers/CronFrequency.php new file mode 100644 index 0000000000000000000000000000000000000000..16d276c14779b8f578274546e82a45ad2c83f03e --- /dev/null +++ b/ReadinessCheckers/CronFrequency.php @@ -0,0 +1,36 @@ +<?php + +/** + * Cron frequency checker. + */ +class CronFrequency implements ReadinessCheckerInterface { + + /** + * Minimum cron threshold is 3 hours. + */ + const MINIMUM_CRON_INTERVAL = 10800; + + /** + * {@inheritdoc} + */ + public static function run() { + $messages = []; + if (variable_get('cron_safe_threshold', DRUPAL_CRON_DEFAULT_THRESHOLD) > static::MINIMUM_CRON_INTERVAL) { + $messages[] = t('Cron is not set to run frequently enough. <a href="@configure">Configure it</a> to run at least every 3 hours or disable automated cron and run it via an external scheduling system.', [ + '@configure' => url('admin/config/system/cron'), + ]); + } + // Determine when cron last ran. + $cron_last = variable_get('cron_last'); + if (!is_numeric($cron_last)) { + $cron_last = variable_get('install_time', 0); + } + if (REQUEST_TIME - $cron_last > static::MINIMUM_CRON_INTERVAL) { + $messages[] = t('Cron has not run recently. <a href="@configure">Configure it</a> to run at least every 3 hours or disable automated cron and run it via an external scheduling system.', [ + '@configure' => url('admin/config/system/cron'), + ]); + } + return $messages; + } + +} diff --git a/ReadinessCheckers/ReadinessCheckerManager.php b/ReadinessCheckers/ReadinessCheckerManager.php index b149af9714b098150cc114ec7fa0df54276d291a..a6f25c96a66b4877d7a47f214f8d2a8458822650 100644 --- a/ReadinessCheckers/ReadinessCheckerManager.php +++ b/ReadinessCheckers/ReadinessCheckerManager.php @@ -23,6 +23,7 @@ class ReadinessCheckerManager { */ protected static function getCheckers() { static::$checkers['warning'][0][] = 'BlacklistPhp72Versions'; + static::$checkers['warning'][0][] = 'CronFrequency'; static::$checkers['warning'][0][] = 'FileOwnership'; static::$checkers['warning'][0][] = 'MissingProjectInfo'; static::$checkers['warning'][0][] = 'ModifiedFiles'; diff --git a/automatic_updates.info b/automatic_updates.info index 4640351748b8013bee2492f80a84440f69223a24..f3a980785757e64714eed0999c64412083fa0244 100644 --- a/automatic_updates.info +++ b/automatic_updates.info @@ -11,6 +11,7 @@ files[] = ModifiedFilesService.php files[] = ReadinessCheckers/ReadinessCheckerManager.php files[] = ReadinessCheckers/ReadinessCheckerInterface.php files[] = ReadinessCheckers/BlacklistPhp72Versions.php +files[] = ReadinessCheckers/CronFrequency.php files[] = ReadinessCheckers/DiskSpace.php files[] = ReadinessCheckers/FileOwnership.php files[] = ReadinessCheckers/MissingProjectInfo.php