diff options
| author | 2019-10-06 22:17:28 +0200 | |
|---|---|---|
| committer | 2019-10-06 22:17:28 +0200 | |
| commit | 3b65f2e5867b3da176be9e976267633eeccf6184 (patch) | |
| tree | 319ee2a9b8e3b57750fc8e8a4bab9250447aa745 /app/Models | |
| parent | be4c942cb3bd2b41dc2e01eb437dfd4f2f73ab4a (diff) | |
Fix PostgreSQL and SQLite DB size estimation (#2562)
Diffstat (limited to 'app/Models')
| -rw-r--r-- | app/Models/DatabaseDAOPGSQL.php | 23 | ||||
| -rw-r--r-- | app/Models/DatabaseDAOSQLite.php | 10 | ||||
| -rw-r--r-- | app/Models/EntryDAO.php | 3 |
3 files changed, 29 insertions, 7 deletions
diff --git a/app/Models/DatabaseDAOPGSQL.php b/app/Models/DatabaseDAOPGSQL.php index 60aceacc2..1a6b3599e 100644 --- a/app/Models/DatabaseDAOPGSQL.php +++ b/app/Models/DatabaseDAOPGSQL.php @@ -49,12 +49,23 @@ class FreshRSS_DatabaseDAOPGSQL extends FreshRSS_DatabaseDAOSQLite { ); } - public function size($all = true) { - $db = FreshRSS_Context::$system_conf->db; - $sql = 'SELECT pg_size_pretty(pg_database_size(?))'; - $values = array($db['base']); - $stm = $this->pdo->prepare($sql); - $stm->execute($values); + public function size($all = false) { + if ($all) { + $db = FreshRSS_Context::$system_conf->db; + $sql = 'SELECT pg_database_size(:base)'; + $stm = $this->pdo->prepare($sql); + $stm->bindParam(':base', $db['base']); + $stm->execute(); + } else { + $sql = "SELECT " + . "pg_total_relation_size('{$this->pdo->prefix()}category') + " + . "pg_total_relation_size('{$this->pdo->prefix()}feed') + " + . "pg_total_relation_size('{$this->pdo->prefix()}entry') + " + . "pg_total_relation_size('{$this->pdo->prefix()}entrytmp') + " + . "pg_total_relation_size('{$this->pdo->prefix()}tag') + " + . "pg_total_relation_size('{$this->pdo->prefix()}entrytag')"; + $stm = $this->pdo->query($sql); + } $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0); return $res[0]; } diff --git a/app/Models/DatabaseDAOSQLite.php b/app/Models/DatabaseDAOSQLite.php index 11900979e..b1473ab09 100644 --- a/app/Models/DatabaseDAOSQLite.php +++ b/app/Models/DatabaseDAOSQLite.php @@ -54,7 +54,15 @@ class FreshRSS_DatabaseDAOSQLite extends FreshRSS_DatabaseDAO { } public function size($all = false) { - return @filesize(join_path(DATA_PATH, 'users', $this->current_user, 'db.sqlite')); + $sum = 0; + if ($all) { + foreach (glob(DATA_PATH . '/users/*/db.sqlite') as $filename) { + $sum += @filesize($filename); + } + } else { + $sum = @filesize(DATA_PATH . '/users/' . $this->current_user . '/db.sqlite'); + } + return $sum; } public function optimize() { diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index cf896eafd..5ff3a5b70 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -951,6 +951,9 @@ SQL; $sql .= ' WHERE f.priority > ' . intval($minPriority); } $stm = $this->pdo->query($sql); + if ($stm == false) { + return false; + } $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0); return isset($res[0]) ? $res[0] : 0; } |
