protected static function fetchRegexData($mode) { global $wgMemc; wfProfileIn(__METHOD__); $phrases = array(); /* first, check if regex string is already stored in memcache */ $key_clause = $mode == SPAMREGEX_SUMMARY ? 'Summary' : 'Textbox'; $key = wfSpamRegexCacheKey('spamRegexCore', 'spamRegex', $key_clause); $cached = $wgMemc->get($key); if (!$cached) { /* fetch data from db, concatenate into one string, then fill cache */ $field = $mode == SPAMREGEX_SUMMARY ? 'spam_summary' : 'spam_textbox'; $dbr = wfGetDB(DB_SLAVE); $res = $dbr->select('spam_regex', 'spam_text', array($field => 1), __METHOD__); while ($row = $res->fetchObject()) { $concat = $row->spam_text; $phrases[] = "/" . $concat . "/i"; } $wgMemc->set($key, $phrases, 0); $res->free(); } else { /* take from cache */ $phrases = $cached; } wfProfileOut(__METHOD__); return $phrases; }
/** * Fetch number of all rows * Use memcached if possible */ function fetchNumResults() { wfProfileIn(__METHOD__); global $wgMemc; /* we use memcached here */ $key = wfSpamRegexCacheKey('spamRegexCore', 'numResults'); $cached = $wgMemc->get($key); $results = 0; if (is_null($cached) || $cached === false) { $dbr = wfGetDB(DB_SLAVE); $results = $dbr->selectField('spam_regex', 'COUNT(*)', '', __METHOD__); $wgMemc->set($key, $results, SPAMREGEX_EXPIRE); } else { $results = $cached; } $this->numResults = $results; wfProfileOut(__METHOD__); return $results; }