コード例 #1
0
ファイル: SpamRegexCore.php プロジェクト: yusufchang/app
 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;
 }
コード例 #2
0
 /**
  * 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;
 }