From a1ca62af50047a92692c009b97bebb73f94db7ea Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 25 Feb 2021 21:42:05 +0300 Subject: cache schema version better --- classes/config.php | 17 ++++++++++++++++- classes/dbupdater.php | 3 +-- classes/feeds.php | 2 +- classes/prefs.php | 2 +- classes/rssutils.php | 4 +--- 5 files changed, 20 insertions(+), 8 deletions(-) (limited to 'classes') diff --git a/classes/config.php b/classes/config.php index 2c46e1784..ee1d3cb4a 100644 --- a/classes/config.php +++ b/classes/config.php @@ -107,8 +107,9 @@ class Config { private static $instance; private $params = []; + private $schema_version = null; - public static function get_instance() { + public static function get_instance() : Config { if (self::$instance == null) self::$instance = new self(); @@ -133,6 +134,20 @@ class Config { } } + static function get_schema_version(bool $nocache = false) { + return self::get_instance()->_schema_version($nocache); + } + + function _schema_version(bool $nocache = false) { + if (empty($this->schema_version) || $nocache) { + $row = Db::pdo()->query("SELECT schema_version FROM ttrss_version")->fetch(); + + $this->schema_version = (int) $row["schema_version"]; + } + + return $this->schema_version; + } + static function cast_to(string $value, int $type_hint) { switch ($type_hint) { case self::T_BOOL: diff --git a/classes/dbupdater.php b/classes/dbupdater.php index e923c7fcb..d1df31b40 100644 --- a/classes/dbupdater.php +++ b/classes/dbupdater.php @@ -12,8 +12,7 @@ class DbUpdater { } function get_schema_version() { - $row = $this->pdo->query("SELECT schema_version FROM ttrss_version")->fetch(); - return (int) $row['schema_version']; + return Config::get_schema_version(true); } function is_update_required() { diff --git a/classes/feeds.php b/classes/feeds.php index c5f868b1d..416e1c026 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -334,7 +334,7 @@ class Feeds extends Handler_Protected { /* we don't need those */ foreach (["date_entered", "guid", "last_published", "last_marked", "tag_cache", "favicon_avg_color", - "uuid", "label_cache", "yyiw"] as $k) + "uuid", "label_cache", "yyiw", "num_enclosures"] as $k) unset($line[$k]); array_push($reply['content'], $line); diff --git a/classes/prefs.php b/classes/prefs.php index 5ce1b6104..dabe5eac6 100644 --- a/classes/prefs.php +++ b/classes/prefs.php @@ -137,7 +137,7 @@ class Prefs { /** @var PDO */ private $pdo; - public static function get_instance() { + public static function get_instance() : Prefs { if (self::$instance == null) self::$instance = new self(); diff --git a/classes/rssutils.php b/classes/rssutils.php index b6aecb8c9..11a94162c 100755 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -53,11 +53,9 @@ class RSSUtils { } static function update_daemon_common($limit = null, $options = []) { - $schema_version = get_schema_version(); - if (!$limit) $limit = Config::get(Config::DAEMON_FEED_LIMIT); - if ($schema_version != SCHEMA_VERSION) { + if (get_schema_version() != SCHEMA_VERSION) { die("Schema version is wrong, please upgrade the database.\n"); } -- cgit v1.2.3