From 7110deb0913be197e85c5594ebd2e92481b7a8d7 Mon Sep 17 00:00:00 2001 From: Michael Save Date: Mon, 9 Jan 2012 10:42:03 +1100 Subject: [PATCH] cache to minimize SQL queries in modlog --- mod.php | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/mod.php b/mod.php index 7e6f1f1f..5470ed87 100644 --- a/mod.php +++ b/mod.php @@ -296,24 +296,33 @@ '' . _('Action') . '' . ''; while($log = $query->fetch()) { - $log['text'] = utf8tohtml($log['text']); - $log['text'] = preg_replace('/(\d+\.\d+\.\d+\.\d+)/', '$1', $log['text']); - - if(isset($boards[$log['board']])) { - if(preg_match('/post #(\d+)/', $log['text'], $match)) { - $post_query = prepare(sprintf("SELECT `thread` FROM `posts_%s` WHERE `id` = :id", $boards[$log['board']])); - $post_query->bindValue(':id', $match[1], PDO::PARAM_INT); - $post_query->execute() or error(db_error($query)); + $log_id = 'log_' . md5($log['text']); + + if($_log = cache::get($log_id)) + $log['text'] = $_log; + else { + + $log['text'] = utf8tohtml($log['text']); + $log['text'] = preg_replace('/(\d+\.\d+\.\d+\.\d+)/', '$1', $log['text']); + + if(isset($boards[$log['board']])) { + if(preg_match('/post #(\d+)/', $log['text'], $match)) { + $post_query = prepare(sprintf("SELECT `thread` FROM `posts_%s` WHERE `id` = :id", $boards[$log['board']])); + $post_query->bindValue(':id', $match[1], PDO::PARAM_INT); + $post_query->execute() or error(db_error($query)); - if($post = $post_query->fetch()) { - $log['text'] = preg_replace('/post #(\d+)/', '$0', $log['text']); + if($post = $post_query->fetch()) { + $log['text'] = preg_replace('/post #(\d+)/', '$0', $log['text']); + + cache::set($log_id, $log['text']); + } } } }