From bb63fd4b75181e1e9429d3a62377dab72a5c0990 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 6 Dec 2010 17:19:41 -0500 Subject: [PATCH] Config flag to disable router caching if needed --- README | 12 ++++++++++++ lib/default.php | 2 ++ lib/router.php | 20 ++++++++++++-------- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/README b/README index 6343e3e024..3bebb11ee0 100644 --- a/README +++ b/README @@ -1538,6 +1538,18 @@ external: external links in notices. One of three values: 'sometimes', nofollowed on profile, notice, and favorites page. Default is 'sometimes'. +router +------ + +We use a router class for mapping URLs to code. This section controls +how that router works. + +cache: whether to cache the router in memcache (or another caching + mechanism). Defaults to true, but may be set to false for + developers (who might be actively adding pages, so won't want the + router cached) or others who see strange behavior. You're unlikely + to need this unless you're a developer. + Plugins ======= diff --git a/lib/default.php b/lib/default.php index 7388046d3b..029dbb3906 100644 --- a/lib/default.php +++ b/lib/default.php @@ -328,4 +328,6 @@ $default = array('ssl_cafile' => false, // To enable SSL cert validation, point to a CA bundle (eg '/usr/lib/ssl/certs/ca-certificates.crt') 'curl' => false, // Use CURL backend for HTTP fetches if available. (If not, PHP's socket streams will be used.) ), + 'router' => + array('cache' => true), // whether to cache the router object. Defaults to true, turn off for devel ); diff --git a/lib/router.php b/lib/router.php index 4b1fdeb92c..eff88bb462 100644 --- a/lib/router.php +++ b/lib/router.php @@ -127,15 +127,19 @@ class Router function __construct() { if (empty($this->m)) { - $k = self::cacheKey(); - $c = Cache::instance(); - $m = $c->get($k); - if (!empty($m)) { - $this->m = $m; - } else { + if (!common_config('router', 'cache')) { $this->m = $this->initialize(); - $c->set($k, $this->m); - } + } else { + $k = self::cacheKey(); + $c = Cache::instance(); + $m = $c->get($k); + if (!empty($m)) { + $this->m = $m; + } else { + $this->m = $this->initialize(); + $c->set($k, $this->m); + } + } } }