X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=Prune.php;h=2ed9ea3debe6eef8dd18b24740658236b7477962;hp=a29eac11cd5d58cb47e76d7343508027ac9a632d;hb=443623f47935eb52acd65a3ff0d84eab1fd5a98b;hpb=a1b74416a73e62543a235281ff65b7b98a6307cc diff --git a/Prune.php b/Prune.php index a29eac11..2ed9ea3d 100644 --- a/Prune.php +++ b/Prune.php @@ -25,19 +25,21 @@ class Pman_Core_Prune extends Pman var $cli = false; function getAuth() { + + $ff = HTML_FlexyFramework::get(); if (!empty($ff->cli)) { $this->cli = true; return true; } -// return true;// for test only + + // return true;// for test only return false; } function get($m="", $opts=array()) { - echo "start?"; - // prune irrelivant stuff.. + // prune irrelivant stuff.. @@ -46,7 +48,28 @@ class Pman_Core_Prune extends Pman function prune($inM) { - + // 40 seconds ? to delete 100K records.. + // DB_DataObject::debugLevel(1); + /* + $f = DB_DataObject::Factory('Events'); + $f->query(" + DELETE FROM Events where + event_when < NOW() - INTERVAL {$inM} MONTH + AND + action != 'NOTIFY' + LIMIT 100000 + "); + */ + // notificication events occur alot - so we should trash them more frequently.. + /* $f = DB_DataObject::Factory('reader_article'); + $f->query(" + DELETE FROM Events where + event_when < NOW() - INTERVAL 1 MONTH + AND + action IN ('NOTIFY') + LIMIT 100000 + "); + */ // rather than deleting them all, it's probably best to just delete notify events that occured to often. // eg. when we tried to deliver multiple times without success... /* @@ -55,7 +78,10 @@ class Pman_Core_Prune extends Pman WHERE action = 'NOTIFY' and event_when < NOW() - INTERVAL 1 WEEK GROUP BY on_id, on_table HAVING mm > 2 ORDER BY mm desc; */ - DB_DataObject::debugLevel(1); + //DB_DataObject::debugLevel(1); + $f = DB_DataObject::Factory('Events'); + $before = $f->count(); + $f = DB_DataObject::Factory('Events'); $f->selectAdd(); $f->selectAdd("on_id, on_table, min(id) as min_id, max(id) as max_id, count(*) as mm"); @@ -64,8 +90,8 @@ class Pman_Core_Prune extends Pman $f->having("mm > 2"); $f->orderBy('mm desc') ; $f->limit(10000); - exit; $ar = $f->fetchAll(); + foreach($ar as $f) { $q = DB_DataObject::Factory('Events'); $q->query("DELETE FROM Events where @@ -75,13 +101,15 @@ class Pman_Core_Prune extends Pman AND on_table = '{$q->escape($f->on_table)}' AND - id > {$f->min_id} + id > {$f->min_id} -- allow the first one to stay.... AND - id < {$f->max_id} + id <= {$f->max_id} "); } - + $f = DB_DataObject::Factory('Events'); + $after = $f->count(); + echo "DELETED : " . ($before - $after) . " records\n";