get_existpages

Top > Hack > get_existpages

get_existpages を3行で軽くする

lib/file.php#get_existpages

// Get a page list of this wiki
function get_existpages($dir = DATA_DIR, $ext = '.txt')
{
+       static $pages = array();
+       if (isset($pages[$dir][$ext])) return $pages[$dir][$ext];
        $aryret = array();

        $pattern = '((?:[0-9A-F]{2})+)';
        if ($ext != '') $ext = preg_quote($ext, '/');
        $pattern = '/^' . $pattern . $ext . '$/';

        $dp = @opendir($dir) or
                die_message($dir . ' is not found or not readable.');
        $matches = array();
        while ($file = readdir($dp))
                if (preg_match($pattern, $file, $matches))
                        $aryret[$file] = decode($matches[1]);
        closedir($dp);
+       $pages[$dir][$ext] = $aryret;
        return $aryret;
}

一ページで、get_existpages を使用しているようなプラグインを何度も使用する場合に格段に早くなる。

#popular(total)
#popular(today)
#popular(yesterday)
#popular(recent)

とか

ファイルに書き出し高速化する方法はこちら http://www.revulo.com/PukiWiki/Cache/PagenameCache.html