From b0b1ba8b6991c2d120c43848c99d0894bf1899c9 Mon Sep 17 00:00:00 2001 From: Retro_Guy Date: Fri, 10 May 2024 03:24:13 -0700 Subject: [PATCH] More memcache cleanup and add threads to memcache. --- Rocksolid_Light/rocksolid/lib/thread.inc.php | 43 ++++++++++++++++---- Rocksolid_Light/rocksolid/newsportal.php | 33 +++++++++------ Rocksolid_Light/rslight/memcached.inc.php | 2 +- 3 files changed, 57 insertions(+), 21 deletions(-) diff --git a/Rocksolid_Light/rocksolid/lib/thread.inc.php b/Rocksolid_Light/rocksolid/lib/thread.inc.php index 89fe804..0ea5a43 100644 --- a/Rocksolid_Light/rocksolid/lib/thread.inc.php +++ b/Rocksolid_Light/rocksolid/lib/thread.inc.php @@ -67,7 +67,22 @@ function thread_pageselect($group, $article_count, $first) */ function thread_cache_load($group) { - global $spooldir, $compress_spoolfiles; + global $spooldir, $config_dir, $logdir, $compress_spoolfiles; + if (file_exists($config_dir . '/memcache.inc.php')) { + include $config_dir . '/memcache.inc.php'; + } + // Check memcache + if ($memcacheD) { + $key = 'thread_cache_load-' . $group; + if ($headers = unserialize($memcacheD->get($key))) { + if ($headers['memcache_time'] >= filemtime($spooldir . '/' . $group . '-lastupdate.dat')) { + if ($enable_memcache_logging) { + file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Using $key from memcache", FILE_APPEND); + } + return $headers; + } + } + } $database = $spooldir . '/' . $group . '-data.db3'; $table = "threads"; if ($dbh = threads_db_open($database, $table)) { @@ -79,6 +94,18 @@ function thread_cache_load($group) } $dbh = null; } + if ($memcacheD) { + $nicole = $memcacheD->delete($key); + $headers['memcache_time'] = time(); + $memcacheD->add($key, serialize($headers), $memcache_ttl); + if ($enable_memcache_logging) { + if ($nicole) { + file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Updated $key in memcache", FILE_APPEND); + } else { + file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Wrote $key to memcache", FILE_APPEND); + } + } + } return ($headers); } @@ -191,7 +218,7 @@ function thread_overview_interpret($line, $overviewformat, $groupname) for ($i = 0; $i < count($overviewfmt) - 1; $i ++) { if ($overviewfmt[$i] == "Subject:") { $subject = preg_replace('/\[doctalk\]/i', '', headerDecode($over[$i + 1])); - // $article->isReply = splitSubject($subject); + // $article->isReply = splitSubject($subject); $article->subject = $subject; } if ($overviewfmt[$i] == "Date:") { @@ -692,12 +719,12 @@ function thread_format_subject($c, $group, $highlightids = false) $offset = $CONFIG['timezone'] * 60; } /* - if ($c->isReply) { - $re = "Re: "; - } else { - $re = ""; - } - */ + * if ($c->isReply) { + * $re = "Re: "; + * } else { + * $re = ""; + * } + */ $re = ""; // is the current article to be highlighted? if ((is_array($highlightids))) { diff --git a/Rocksolid_Light/rocksolid/newsportal.php b/Rocksolid_Light/rocksolid/newsportal.php index 2a0fd70..266e64a 100644 --- a/Rocksolid_Light/rocksolid/newsportal.php +++ b/Rocksolid_Light/rocksolid/newsportal.php @@ -643,14 +643,6 @@ function groups_show($gruppen) $found = 1; } } else { - $result = $memcacheD->delete($lar_memcache); - if ($enable_memcache_logging) { - if ($result) { - file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Deleted $lar_memcache from memcache", FILE_APPEND); - } else { - file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Failed to delete (or not found) $lar_memcache from memcache", FILE_APPEND); - } - } unset($lastarticleinfo); } } @@ -659,12 +651,15 @@ function groups_show($gruppen) $database = $spooldir . '/articles-overview.db3'; $table = 'overview'; $overview_dbh = overview_db_open($database); - $overview_query = $overview_dbh->prepare('SELECT * FROM overview WHERE newsgroup=:newsgroup ORDER BY CAST(date AS int) DESC LIMIT 2'); + $overview_query = $overview_dbh->prepare('SELECT * FROM overview WHERE newsgroup=:newsgroup ORDER BY CAST(date AS int) DESC LIMIT 5'); $overview_query->execute([ 'newsgroup' => $g->name ]); $found = 0; while ($row = $overview_query->fetch()) { + if($row['date'] > time()) { + continue; + } $found = 1; break; } @@ -674,9 +669,13 @@ function groups_show($gruppen) $lastarticleinfo = $row; if ($memcacheD) { touch($groupfile, $lastarticleinfo['date']); - $memcacheD->delete($lar_memcache); + $nicole = $memcacheD->delete($lar_memcache); $memcacheD->add($lar_memcache, serialize($row), $memcache_ttl); - file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Wrote $lar_memcache to memcache", FILE_APPEND); + if ($nicole) { + file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Updated $lar_memcache in memcache", FILE_APPEND); + } else { + file_put_contents($logdir . '/memcache.log', "\n" . format_log_date() . " Wrote $lar_memcache to memcache", FILE_APPEND); + } } } } @@ -2345,6 +2344,12 @@ function insert_article_from_array($this_article, $check_duplicates = true) } } + if($this_article['epochdate'] > time()) { + echo "\n(newsportal)Article date in future. Skipping: " . $group . ":" . $this_article['mid']; + file_put_contents($logfile, "\n" . format_log_date() . " " . $config_name . " Article date in future. Skipping: " . $group . ":" . $this_article['mid'], FILE_APPEND); + return "441 Insert failed (article date in future)\r\n"; + } + // Open articles Database if ($CONFIG['article_database'] == '1') { $article_dbh = article_db_open($spooldir . '/' . $group . '-articles.db3'); @@ -2407,7 +2412,11 @@ function insert_article_from_array($this_article, $check_duplicates = true) $statusdate = time(); $statusreason = "imported"; add_to_history($group, $this_article['local'], $this_article['mid'], $status, $statusdate, $statusreason, $statusnotes); - touch($spooldir . '/' . $group . '-lastupdate.dat', $this_article['epochdate']); + if ($this_article['epochdate'] < time()) { + touch($spooldir . '/' . $group . '-lastupdate.dat', $this_article['epochdate']); + } else { + touch($spooldir . '/' . $group . '-lastupdate.dat', time()); + } } function is_deleted_post($group, $number) diff --git a/Rocksolid_Light/rslight/memcached.inc.php b/Rocksolid_Light/rslight/memcached.inc.php index eefccae..5ba0557 100644 --- a/Rocksolid_Light/rslight/memcached.inc.php +++ b/Rocksolid_Light/rslight/memcached.inc.php @@ -11,7 +11,7 @@ if(!$enable_memcache) { $server = '127.0.0.1'; $port = 11211; -// Log all hits +// Log all hits (log file may be large) $enable_memcache_logging = false; // Time in seconds to cache data