From 0a886868fb25ec1e2500ea2be0ea06c73cb0b2b2 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 15 Jun 2009 21:33:56 -0700 Subject: Add some basic memcached handling to status_network Status_network can't be a subclass of Memcached_DataObject -- the latter is too entrenched in Laconica's memc handling functions, which aren't loaded when Status_network is running! But the importance of caching these values can't be overstated. So, a considerably slimmed-down version of the Memcached_DataObject code is transcribed into Status_network. --- classes/Status_network.php | 88 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 82 insertions(+), 6 deletions(-) diff --git a/classes/Status_network.php b/classes/Status_network.php index 17b688740..d54364df5 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -1,9 +1,29 @@ . */ -class Status_network extends DB_DataObject +if (!defined('LACONICA')) { exit(1); } + +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class Status_network extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -28,7 +48,10 @@ class Status_network extends DB_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE - static function setupDB($dbhost, $dbuser, $dbpass, $dbname) + static $cache = null; + static $base = null; + + static function setupDB($dbhost, $dbuser, $dbpass, $dbname, $servers) { global $config; @@ -36,7 +59,60 @@ class Status_network extends DB_DataObject $config['db']['ini_'.$dbname] = INSTALLDIR.'/classes/statusnet.ini'; $config['db']['table_status_network'] = $dbname; - return true; + self::$cache = new Memcache(); + + if (is_array($servers)) { + foreach($servers as $server) { + self::$cache->addServer($server); + } + } else { + self::$cache->addServer($servers); + } + + self::$base = $dbname; + } + + static function cacheKey($k, $v) { + return 'laconica:' . self::$base . ':status_network:'.$k.':'.$v; + } + + static function memGet($k, $v) + { + $ck = self::cacheKey($k, $v); + + $sn = self::$cache->get($ck); + + if (empty($sn)) { + $sn = self::staticGet($k, $v); + if (!empty($sn)) { + self::$cache->set($ck, $sn); + } + } + + return $sn; + } + + function decache() + { + $keys = array('nickname', 'hostname', 'pathname'); + foreach ($keys as $k) { + $ck = self::cacheKey($k, $this->$k); + self::$cache->delete($ck); + } + } + + function update($orig=null) + { + if (is_object($orig)) { + $orig->decache(); # might be different keys + } + return parent::update($orig); + } + + function delete() + { + $this->decache(); # while we still have the values! + return parent::delete(); } static function setupSite($servername, $pathname, $wildcard) @@ -51,13 +127,13 @@ class Status_network extends DB_DataObject if (0 == strncasecmp(strrev($wildcard), strrev($servername), strlen($wildcard))) { // special case for exact match if (0 == strcasecmp($servername, $wildcard)) { - $sn = Status_network::staticGet('nickname', ''); + $sn = self::memGet('nickname', ''); } else { $parts = explode('.', $servername); - $sn = Status_network::staticGet('nickname', strtolower($parts[0])); + $sn = self::memGet('nickname', strtolower($parts[0])); } } else { - $sn = Status_network::staticGet('hostname', strtolower($servername)); + $sn = self::memGet('hostname', strtolower($servername)); } if (!empty($sn)) { -- cgit v1.2.3-54-g00ecf From 39117bf88c7eca88824f702eabdac94e583af66b Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 15 Jun 2009 21:55:56 -0700 Subject: forgot to disinherit Memcached_DataObject in Status_network --- classes/Status_network.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/classes/Status_network.php b/classes/Status_network.php index d54364df5..f8d6756b6 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -21,9 +21,7 @@ if (!defined('LACONICA')) { exit(1); } -require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; - -class Status_network extends Memcached_DataObject +class Status_network extends DB_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ -- cgit v1.2.3-54-g00ecf From 5daa0e358f0a75261e3240820cd6bcf7a57504fc Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Tue, 16 Jun 2009 06:32:17 +0000 Subject: Using neutral colour for notice hover --- theme/default/css/display.css | 4 ++-- theme/identica/css/display.css | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/theme/default/css/display.css b/theme/default/css/display.css index 166e62157..06cf9fb26 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -228,8 +228,8 @@ div.notice-options a, div.notice-options input { font-family:sans-serif; } -.notices li.hover { -background-color:#fcfcfc; +.notices li:hover { +background-color:rgba(194, 194, 194, 0.025); } .notices .notices { diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index cab42f16f..0332a6f1e 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -228,8 +228,8 @@ div.notice-options a, div.notice-options input { font-family:sans-serif; } -.notices li.hover { -background-color:#fcfcfc; +.notices li:hover { +background-color:rgba(194, 194, 194, 0.025); } .notices .notices { -- cgit v1.2.3-54-g00ecf From c98179378be7c8903a6ba7a9fe37bf6683219555 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Tue, 16 Jun 2009 07:45:19 +0000 Subject: Revert "Using neutral colour for notice hover" This reverts commit 5daa0e358f0a75261e3240820cd6bcf7a57504fc. --- theme/default/css/display.css | 4 ++-- theme/identica/css/display.css | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/theme/default/css/display.css b/theme/default/css/display.css index 06cf9fb26..166e62157 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -228,8 +228,8 @@ div.notice-options a, div.notice-options input { font-family:sans-serif; } -.notices li:hover { -background-color:rgba(194, 194, 194, 0.025); +.notices li.hover { +background-color:#fcfcfc; } .notices .notices { diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index 0332a6f1e..cab42f16f 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -228,8 +228,8 @@ div.notice-options a, div.notice-options input { font-family:sans-serif; } -.notices li:hover { -background-color:rgba(194, 194, 194, 0.025); +.notices li.hover { +background-color:#fcfcfc; } .notices .notices { -- cgit v1.2.3-54-g00ecf