]> git.mxchange.org Git - friendica.git/commitdiff
DBClean now works with the conversation table as well
authorMichael <heluecht@pirati.ca>
Tue, 5 Dec 2017 21:30:38 +0000 (21:30 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 5 Dec 2017 21:30:38 +0000 (21:30 +0000)
boot.php
database.sql
include/dbstructure.php
src/Worker/DBClean.php
update.php

index 15dfec48b84b06ba6703b760fb9ac702580c50ef..eda8a4037da418844ff85279647c137efa68cf52 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -44,7 +44,7 @@ define('FRIENDICA_PLATFORM',     'Friendica');
 define('FRIENDICA_CODENAME',     'Asparagus');
 define('FRIENDICA_VERSION',      '3.6-dev');
 define('DFRN_PROTOCOL_VERSION',  '2.23');
-define('DB_UPDATE_VERSION',      1235);
+define('DB_UPDATE_VERSION',      1236);
 
 /**
  * @brief Constant with a HTML line break.
@@ -686,7 +686,7 @@ function update_db(App $a)
                                // Compare the current structure with the defined structure
 
                                $t = Config::get('database', 'dbupdate_' . DB_UPDATE_VERSION);
-                               if ($t !== false) {
+                               if (!is_null($t)) {
                                        return;
                                }
 
index e4e891e482080b0b12d3349604ee6c4340d86bb2..09f1a83cc14cd38fac7e8a021c092a09b5b5b7ad 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 3.6-dev (Asparagus)
--- DB_UPDATE_VERSION 1235
+-- DB_UPDATE_VERSION 1236
 -- ------------------------------------------
 
 
@@ -216,7 +216,8 @@ CREATE TABLE IF NOT EXISTS `conversation` (
        `source` mediumtext,
        `received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
         PRIMARY KEY(`item-uri`),
-        INDEX `conversation-uri` (`conversation-uri`)
+        INDEX `conversation-uri` (`conversation-uri`),
+        INDEX `received` (`received`)
 ) DEFAULT COLLATE utf8mb4_general_ci;
 
 --
index cb2883d40d3bfa264dd8e0d63feaaca51351ddc5..3c620d7d72ae476cc3e437f1452f92c07a535361 100644 (file)
@@ -831,6 +831,7 @@ function db_definition() {
                        "indexes" => array(
                                        "PRIMARY" => array("item-uri"),
                                        "conversation-uri" => array("conversation-uri"),
+                                       "received" => array("received"),
                                        )
                        );
        $database["event"] = array(
index 7030081dc98d5ab17608c2a05c8daf62f91a2330..dc2075f9a8a013832715a0f4165b2980a06f644a 100644 (file)
@@ -21,10 +21,10 @@ class DBClean {
                $days = Config::get('system', 'dbclean-expire-days', 0);
 
                if ($stage == 0) {
-                       for ($i = 1; $i <= 9; $i++) {
+                       for ($i = 1; $i <= 10; $i++) {
                                // Execute the background script for a step when it isn't finished.
                                // Execute step 8 and 9 only when $days is defined.
-                               if (!Config::get('system', 'finished-dbclean-'.$i, false) && (($i < 8) || ($days > 0))) {
+                               if (!Config::get('system', 'finished-dbclean-'.$i, false) && (($i < 8) || ($i > 9) || ($days > 0))) {
                                        Worker::add(PRIORITY_LOW, 'DBClean', $i);
                                }
                        }
@@ -39,15 +39,16 @@ class DBClean {
         *
         * Values for $stage:
         * ------------------
-        * 1:   Old global item entries from item table without user copy.
-        * 2:   Items without parents.
-        * 3:   Orphaned data from thread table.
-        * 4:   Orphaned data from notify table.
-        * 5:   Orphaned data from notify-threads table.
-        * 6:   Orphaned data from sign table.
-        * 7:   Orphaned data from term table.
-        * 8:   Expired threads.
-        * 9:   Old global item entries from expired threads
+        *  1:  Old global item entries from item table without user copy.
+        *  2:  Items without parents.
+        *  3:  Orphaned data from thread table.
+        *  4:  Orphaned data from notify table.
+        *  5:  Orphaned data from notify-threads table.
+        *  6:  Orphaned data from sign table.
+        *  7:  Orphaned data from term table.
+        *  8:  Expired threads.
+        *  9:  Old global item entries from expired threads.
+        * 10:  Old conversations.
         */
        private static function removeOrphans($stage = 0) {
                global $db;
@@ -293,6 +294,27 @@ class DBClean {
                        logger("Done deleting ".$count." old global item entries from expired threads. Last ID: ".$last_id);
 
                        Config::set('system', 'dbclean-last-id-9', $last_id);
+               } elseif ($stage == 10) {
+                       $last_id = Config::get('system', 'dbclean-last-id-10', 0);
+
+                       logger("Deleting old conversations. Last created: ".$last_id);
+                       $r = dba::p("SELECT `received`, `item-uri` FROM `conversation`
+                                       WHERE `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY
+                                       ORDER BY `received` LIMIT ".intval($limit));
+                       $count = dba::num_rows($r);
+                       if ($count > 0) {
+                               logger("found old conversations: ".$count);
+                               while ($orphan = dba::fetch($r)) {
+                                       $last_id = $orphan["received"];
+                                       dba::delete('conversation', array('item-uri' => $orphan["item-uri"]));
+                               }
+                       } else {
+                               logger("No old conversations found");
+                       }
+                       dba::close($r);
+                       logger("Done deleting ".$count." conversations. Last created: ".$last_id);
+
+                       Config::set('system', 'dbclean-last-id-10', $last_id);
                }
 
                // Call it again if not all entries were purged
index 326c08414e48b766b9c78501287d2cae1842e286..12a04995c93cb6b5c1ac3bc7c408774dc461ca6b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define('UPDATE_VERSION' , 1235);
+define('UPDATE_VERSION' , 1236);
 
 use Friendica\Core\Config;
 use Friendica\Core\PConfig;