]> git.wh0rd.org - tt-rss.git/commitdiff
implement automatic tags table maintenance
authorAndrew Dolgov <fox@fakecake.org>
Sat, 13 Nov 2010 16:59:42 +0000 (19:59 +0300)
committerAndrew Dolgov <fox@fakecake.org>
Sat, 13 Nov 2010 16:59:42 +0000 (19:59 +0300)
functions.php
update.php

index 553b26563072a7857afcc321559e6e64999aad56..2331c89f48768f4febfa31426dcf14d3f7cb70ad 100644 (file)
 
                purge_orphans($link);
 
+               $rc = cleanup_tags($link, 14, 50000);
+
+               if ($debug) _debug("$rc uncached tags cleaned.");
+
        } // function update_daemon_common
 
        function sanitize_article_content($text) {
                return $ids;
        }
 
+       function cleanup_tags($link, $days = 14, $limit = 1000) {
+
+               if (DB_TYPE == "pgsql") {
+                       $interval_query = "date_updated < NOW() - INTERVAL '$days days'";
+               } else if (DB_TYPE == "mysql") {
+                       $interval_query = "date_updated < DATE_SUB(NOW(), INTERVAL $days DAY)";
+               }
+
+               $query = "SELECT ttrss_tags.id AS id 
+                       FROM ttrss_tags, ttrss_user_entries, ttrss_entries 
+                       WHERE post_int_id = int_id AND $interval_query AND
+                       ref_id = ttrss_entries.id AND tag_cache != '' LIMIT $limit";
+
+               $result = db_query($link, $query);
+
+               return db_affected_rows($link, $result);
+       }
+
 ?>
index 64b5795fa39f699c6ea78cd4efe77cd73952108c..ac1d84c8eb761a6105ab684ca181ae1a0ef1bdd5 100755 (executable)
@@ -19,6 +19,7 @@
                print "  -feeds         - update feeds\n";
                print "  -feedbrowser   - update feedbrowser\n";
                print "  -daemon        - start single-process update daemon\n";
+               print "  -cleanup-tags  - perform tags table maintenance\n";
                print "  -help          - show this help\n";
                return;
        }
 
        }
 
+       if ($op == "-cleanup-tags") {
+               $rc = cleanup_tags($link, 14, 50000);
+               print "$rc tags deleted.\n";
+       }
+
        db_close($link);
 
        unlink(LOCK_DIRECTORY . "/$lock_filename");