summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-02-25 21:42:05 +0300
committerAndrew Dolgov <[email protected]>2021-02-25 21:42:05 +0300
commita1ca62af50047a92692c009b97bebb73f94db7ea (patch)
tree47f884324f34fef0d293add0be4a33a7a22feb1d
parent22ae284db48d03a2a9c52d48add35ce329450a99 (diff)
cache schema version better
-rw-r--r--classes/config.php17
-rw-r--r--classes/dbupdater.php3
-rwxr-xr-xclasses/feeds.php2
-rw-r--r--classes/prefs.php2
-rwxr-xr-xclasses/rssutils.php4
-rw-r--r--include/functions.php10
-rw-r--r--include/sessions.php17
-rwxr-xr-xupdate.php4
-rwxr-xr-xupdate_daemon2.php4
9 files changed, 24 insertions, 39 deletions
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");
}
diff --git a/include/functions.php b/include/functions.php
index 746f8d39e..6d845035e 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -166,8 +166,6 @@
define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . get_version() . ' (http://tt-rss.org/)');
ini_set('user_agent', SELF_USER_AGENT);
- $schema_version = false;
-
/* compat shims */
function _debug($msg) {
@@ -306,13 +304,7 @@
}
function get_schema_version() {
- $pdo = Db::pdo();
-
- $row = $pdo->query("SELECT schema_version FROM ttrss_version")->fetch();
- $version = $row["schema_version"];
- $schema_version = $version;
-
- return $version;
+ return Config::get_schema_version();
}
function file_is_locked($filename) {
diff --git a/include/sessions.php b/include/sessions.php
index 23815e182..891a6b3fa 100644
--- a/include/sessions.php
+++ b/include/sessions.php
@@ -19,25 +19,10 @@
ini_set("session.gc_maxlifetime", $session_expire);
ini_set("session.cookie_lifetime", "0");
- function session_get_schema_version() {
- global $schema_version;
-
- if (!$schema_version) {
- $row = \Db::pdo()->query("SELECT schema_version FROM ttrss_version")->fetch();
-
- $version = $row["schema_version"];
-
- $schema_version = $version;
- return $version;
- } else {
- return $schema_version;
- }
- }
-
function validate_session() {
if (\Config::get(\Config::SINGLE_USER_MODE)) return true;
- if (isset($_SESSION["ref_schema_version"]) && $_SESSION["ref_schema_version"] != session_get_schema_version()) {
+ if (isset($_SESSION["ref_schema_version"]) && $_SESSION["ref_schema_version"] != \Config::get_schema_version()) {
$_SESSION["login_error_msg"] =
__("Session failed to validate (schema version changed)");
return false;
diff --git a/update.php b/update.php
index bcb6d6d12..aab84bfdb 100755
--- a/update.php
+++ b/update.php
@@ -145,9 +145,7 @@
}
if (!isset($options['update-schema'])) {
- $schema_version = get_schema_version();
-
- if ($schema_version != SCHEMA_VERSION) {
+ if (get_schema_version() != SCHEMA_VERSION) {
die("Schema version is wrong, please upgrade the database (--update-schema).\n");
}
}
diff --git a/update_daemon2.php b/update_daemon2.php
index b75f06ae5..1e8b1d072 100755
--- a/update_daemon2.php
+++ b/update_daemon2.php
@@ -188,9 +188,7 @@
"Maybe another daemon is already running.\n");
}
- $schema_version = get_schema_version();
-
- if ($schema_version != SCHEMA_VERSION) {
+ if (get_schema_version() != SCHEMA_VERSION) {
die("Schema version is wrong, please upgrade the database.\n");
}