summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-22 19:57:35 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-22 20:01:00 +0300
commitb25684a5a677df493f7c8b72f1bb8ac27fdb8bf0 (patch)
tree2fba7bfd9775609324206140c1d0208fe82cf7f1 /classes
parent6695a81e3acd8746798022a7da783be32d4db1e3 (diff)
make default task schedules configurable
Diffstat (limited to 'classes')
-rw-r--r--classes/Config.php39
-rw-r--r--classes/RSSUtils.php18
2 files changed, 47 insertions, 10 deletions
diff --git a/classes/Config.php b/classes/Config.php
index a4d2eb6b3..57878fb42 100644
--- a/classes/Config.php
+++ b/classes/Config.php
@@ -188,6 +188,33 @@ class Config {
* key is a 32 byte hex string which may be generated using `update.php --gen-encryption-key` */
const ENCRYPTION_KEY = "ENCRYPTION_KEY";
+ /** scheduled task to purge orphaned articles, value should be valid cron expression */
+ const SCHEDULE_PURGE_ORPHANS = "SCHEDULE_PURGE_ORPHANS";
+
+ /** scheduled task to expire disk cache, value should be valid cron expression */
+ const SCHEDULE_DISK_CACHE_EXPIRE_ALL = "SCHEDULE_DISK_CACHE_EXPIRE_ALL";
+
+ /** scheduled task, value should be valid cron expression */
+ const SCHEDULE_DISABLE_FAILED_FEEDS = "SCHEDULE_DISABLE_FAILED_FEEDS";
+
+ /** scheduled task to migrate feed icons from legacy dir, value should be valid cron expression */
+ const SCHEDULE_MIGRATE_FEED_ICONS = "SCHEDULE_MIGRATE_FEED_ICONS";
+
+ /** scheduled task to cleanup feed icons, value should be valid cron expression */
+ const SCHEDULE_CLEANUP_FEED_ICONS = "SCHEDULE_CLEANUP_FEED_ICONS";
+
+ /** scheduled task to disable feed updates of inactive users, value should be valid cron expression */
+ const SCHEDULE_LOG_DAEMON_UPDATE_LOGIN_LIMIT_USERS = "SCHEDULE_LOG_DAEMON_UPDATE_LOGIN_LIMIT_USERS";
+
+ /** scheduled task to cleanup error log, value should be valid cron expression */
+ const SCHEDULE_EXPIRE_ERROR_LOG = "SCHEDULE_EXPIRE_ERROR_LOG";
+
+ /** scheduled task to cleanup update daemon lock files, value should be valid cron expression */
+ const SCHEDULE_EXPIRE_LOCK_FILES = "SCHEDULE_EXPIRE_LOCK_FILES";
+
+ /** scheduled task to send digests, value should be valid cron expression */
+ const SCHEDULE_SEND_HEADLINES_DIGESTS = "SCHEDULE_SEND_HEADLINES_DIGESTS";
+
/** default values for all global configuration options */
private const _DEFAULTS = [
Config::DB_TYPE => [ "pgsql", Config::T_STRING ],
@@ -244,7 +271,17 @@ class Config {
Config::T_STRING ],
Config::HTTP_429_THROTTLE_INTERVAL => [ 3600, Config::T_INT ],
Config::DISABLE_LOGIN_FORM => [ "", Config::T_BOOL ],
- Config::ENCRYPTION_KEY => [ "", Config::T_STRING ]
+ Config::ENCRYPTION_KEY => [ "", Config::T_STRING ],
+ Config::SCHEDULE_PURGE_ORPHANS => ["@daily", Config::T_STRING],
+ Config::SCHEDULE_DISK_CACHE_EXPIRE_ALL => ["@daily", Config::T_STRING],
+ Config::SCHEDULE_DISABLE_FAILED_FEEDS => ["@daily", Config::T_STRING],
+ Config::SCHEDULE_MIGRATE_FEED_ICONS => ["@daily", Config::T_STRING],
+ Config::SCHEDULE_CLEANUP_FEED_ICONS => ["@daily", Config::T_STRING],
+ Config::SCHEDULE_LOG_DAEMON_UPDATE_LOGIN_LIMIT_USERS =>
+ ["@daily", Config::T_STRING],
+ Config::SCHEDULE_EXPIRE_ERROR_LOG => ["@hourly", Config::T_STRING],
+ Config::SCHEDULE_EXPIRE_LOCK_FILES => ["@hourly", Config::T_STRING],
+ Config::SCHEDULE_SEND_HEADLINES_DIGESTS => ["@hourly", Config::T_STRING],
];
private static ?Config $instance = null;
diff --git a/classes/RSSUtils.php b/classes/RSSUtils.php
index 376996a95..5fc8ddcef 100644
--- a/classes/RSSUtils.php
+++ b/classes/RSSUtils.php
@@ -1689,7 +1689,7 @@ class RSSUtils {
$scheduler = Scheduler::getInstance();
- $scheduler->add_scheduled_task('purge_orphans', '@daily',
+ $scheduler->add_scheduled_task('purge_orphans', Config::get(Config::SCHEDULE_PURGE_ORPHANS),
function() {
Article::_purge_orphans();
@@ -1697,7 +1697,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('disk_cache_expire_all', '@daily',
+ $scheduler->add_scheduled_task('disk_cache_expire_all', Config::get(Config::SCHEDULE_PURGE_ORPHANS),
function() {
$cache = DiskCache::instance("");
$cache->expire_all();
@@ -1706,7 +1706,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('disable_failed_feeds', '@daily',
+ $scheduler->add_scheduled_task('disable_failed_feeds', Config::get(Config::SCHEDULE_DISABLE_FAILED_FEEDS),
function() {
self::disable_failed_feeds();
@@ -1714,7 +1714,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('migrate_feed_icons', '@daily',
+ $scheduler->add_scheduled_task('migrate_feed_icons', Config::get(Config::SCHEDULE_MIGRATE_FEED_ICONS),
function() {
self::migrate_feed_icons();
@@ -1722,7 +1722,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('cleanup_feed_icons', '@daily',
+ $scheduler->add_scheduled_task('cleanup_feed_icons', Config::get(Config::SCHEDULE_CLEANUP_FEED_ICONS),
function() {
self::cleanup_feed_icons();
@@ -1730,7 +1730,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('log_daemon_update_login_limit_users', '@daily',
+ $scheduler->add_scheduled_task('log_daemon_update_login_limit_users', Config::get(Config::SCHEDULE_LOG_DAEMON_UPDATE_LOGIN_LIMIT_USERS),
function() {
$login_limit = Config::get(Config::DAEMON_UPDATE_LOGIN_LIMIT);
@@ -1753,7 +1753,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('expire_error_log', '@hourly',
+ $scheduler->add_scheduled_task('expire_error_log', Config::get(Config::SCHEDULE_EXPIRE_ERROR_LOG),
function() {
self::expire_error_log();
@@ -1761,7 +1761,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('expire_lock_files', '@hourly',
+ $scheduler->add_scheduled_task('expire_lock_files', Config::get(Config::SCHEDULE_EXPIRE_LOCK_FILES),
function() {
self::expire_lock_files();
@@ -1769,7 +1769,7 @@ class RSSUtils {
}
);
- $scheduler->add_scheduled_task('send_headlines_digests', '@hourly',
+ $scheduler->add_scheduled_task('send_headlines_digests', Config::get(Config::SCHEDULE_SEND_HEADLINES_DIGESTS),
function() {
Digest::send_headlines_digests();