summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2013-08-15 17:10:58 +0200
committerFlorian Pritz <bluewind@xinu.at>2013-08-15 17:12:21 +0200
commit7f0065ddbd80fe32e49cede2d65d231c6ec6f183 (patch)
tree3291f894b163cd75729c15d08be82e9d6d7c4258
parent92c84158677f30edb8872754d92832a35420952d (diff)
Switch to CI's caching class
This supports more caching backends and doesn't force users to install the memcache extension. Signed-off-by: Florian Pritz <bluewind@xinu.at>
-rw-r--r--INSTALL1
-rw-r--r--application/config/.gitignore2
-rw-r--r--application/config/config.php7
-rw-r--r--application/config/example/memcache.php9
-rw-r--r--application/config/example/memcached.php17
-rw-r--r--application/controllers/file.php6
-rw-r--r--application/libraries/MemcacheLibrary.php202
-rw-r--r--application/models/mfile.php6
-rw-r--r--install.php5
9 files changed, 31 insertions, 224 deletions
diff --git a/INSTALL b/INSTALL
index a0e5311e4..9d38727a9 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,6 @@
- if you are only creating a basic development installation you will only need:
perl
pygmentize (part of pygments)
- PHP Memache extension
* Copy all files from ./application/config/example to ./application/config
* Change them to fit your needs
diff --git a/application/config/.gitignore b/application/config/.gitignore
index bf68cb2ad..45e1c5158 100644
--- a/application/config/.gitignore
+++ b/application/config/.gitignore
@@ -1,3 +1,3 @@
config-local.php
database.php
-memcache.php
+memcached.php
diff --git a/application/config/config.php b/application/config/config.php
index 3ff8b816b..dda82de97 100644
--- a/application/config/config.php
+++ b/application/config/config.php
@@ -380,6 +380,13 @@ $config['actions_max_age'] = 60*60*24*5; // 5 days
// won't be deleted
$config['small_upload_size'] = 1024*10; // 10KB
+// possible values:
+// - apc: needs the apc module and is only useful on long running php processes
+// - file: you will have to clean up the cache directory yourself (application/cache/)
+// - memcached: config in application/config/memcached.php; you need the memcached module (with the D)
+// - dummy: disables caching
+$config['cache_backend'] = "dummy";
+
// for possible drivers look into ./application/libraries/Duser/drivers/
$config['authentication_driver'] = 'db';
diff --git a/application/config/example/memcache.php b/application/config/example/memcache.php
deleted file mode 100644
index a5bc7e3a8..000000000
--- a/application/config/example/memcache.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-// this file is a config example for the codeigniter-memcache library
-// add this file to the your application's config directory
-$config["MEMCACHE_HOST"] = '127.0.0.1';
-$config["MEMCACHE_PORT"] = 11211;
-
-
-?>
diff --git a/application/config/example/memcached.php b/application/config/example/memcached.php
new file mode 100644
index 000000000..29b145ec8
--- /dev/null
+++ b/application/config/example/memcached.php
@@ -0,0 +1,17 @@
+<?php
+
+$config = array(
+ "default" => array(
+ "hostname" => "127.0.0.1",
+ "port" => 11211,
+ "weight" => 1,
+ ),
+ "socket" => array(
+ "hostname" => FCPATH.'/memcached.sock',
+ "port" => 0,
+ "weight" => 2,
+ ),
+);
+
+
+?>
diff --git a/application/controllers/file.php b/application/controllers/file.php
index 2d6a8ecc4..55ed10fea 100644
--- a/application/controllers/file.php
+++ b/application/controllers/file.php
@@ -155,8 +155,8 @@ class File extends CI_Controller {
$this->data['filedata'] = $filedata;
// highlight the file and chache the result
- $this->load->library("MemcacheLibrary");
- if (! $cached = $this->memcachelibrary->get($filedata['hash'].'_'.$lexer)) {
+ $this->load->driver('cache', array('adapter' => $this->config->item("cache_backend")));
+ if (! $cached = $this->cache->get($filedata['hash'].'_'.$lexer)) {
$cached = array();
if ($lexer == "rmd") {
ob_start();
@@ -175,7 +175,7 @@ class File extends CI_Controller {
$ret = $this->_colorify($file, "text");
$cached["output"] = $ret["output"];
}
- $this->memcachelibrary->set($filedata['hash'].'_'.$lexer, $cached, 100);
+ $this->cache->save($filedata['hash'].'_'.$lexer, $cached, 100);
}
if ($cached["return_value"] != 0) {
diff --git a/application/libraries/MemcacheLibrary.php b/application/libraries/MemcacheLibrary.php
deleted file mode 100644
index 1716a1d10..000000000
--- a/application/libraries/MemcacheLibrary.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-
-/**
-* codeigniter-memcache v0.1
-*
-* codeigniter-memcache is a codeigniter library to work with memcached easily.
-*
-*
-* @file MemcacheLibrary.php
-* @copyright 2010 egnity - egnity.com
-* @author Emre Yilmaz <mail@emreyilmaz.me>
-* @license GNU General Public License
-* @version 0.1
-*/
-
-
-class MemcacheLibrary {
-
- /**
- * variable that holds memcached backend instance
- *
- * @var object
- * @access public
- */
- public $memcachedInstance;
-
- /**
- * variable that holds servers for the memcache
- *
- * @var array
- * @access public
- */
- public $servers = array();
-
-
- /**
- * main CodeIgniter instance
- *
- * @var object
- * @access public
- */
- public $CI;
-
- /**
- * constructor function for the library
- */
- public function __construct() {
-
- /* initialize memcached instance */
- if(class_exists("Memcache")) {
- $this->memcachedInstance = new Memcache();
- } else {
- throw new Exception(
- "Memcached client doesn't exists in your PHP configuration"
- );
- }
-
- /* load super CI instance */
- $this->CI =& get_instance();
-
- /* load default server info */
- $this->CI->config->load("memcache");
-
- /* connect to default server */
- if($this->CI->config->item("MEMCACHE_HOST") && $this->CI->config->item("MEMCACHE_PORT") !== false) {
- $this->addServer($this->CI->config->item("MEMCACHE_HOST"), $this->CI->config->item("MEMCACHE_PORT"));
- }
-
- }
-
- /**
- * adder function for the memcache servers
- *
- * @access public
- * @return void
- */
- public function addServer($server, $port) {
- $this->servers[] = array(
- "server" => $server,
- "port" => $port,
- );
-
- $this->memcachedInstance->addServer($server, $port);
- }
-
- /**
- * gets related key from the memcache
- *
- * @access public
- */
- public function get($key) {
- $this->logDebugMessage(sprintf("%s key requested from memcache", $key));
-
- // hide notice if server is unreachable
- $old_error_level = error_reporting();
- error_reporting($old_error_level & ~E_NOTICE);
-
- $ret = $this->memcachedInstance->get($key);
-
- error_reporting($old_error_level);
- return $ret;
- }
-
- /**
- * sets related key to the memcache
- *
- * @access public
- */
- public function set($key, $value, $expire = null) {
- $this->logDebugMessage(
- sprintf("%s key set to memcache. (expire: %s)",$key, $expire)
- );
-
- // hide notice if server is unreachable
- $old_error_level = error_reporting();
- error_reporting($old_error_level & ~E_NOTICE);
-
- $ret = $this->memcachedInstance->set($key, $value, null, $expire);
-
- error_reporting($old_error_level);
- return $ret;
- }
-
- /**
- * deletes related key from the memcache
- *
- * @access public
- */
- public function delete($key) {
- $this->logDebugMessage(sprintf("%s key deleted from memcache.", $key));
- // hide notice if server is unreachable
- $old_error_level = error_reporting();
- error_reporting($old_error_level & ~E_NOTICE);
-
- $ret = $this->memcachedInstance->delete($key);
-
- error_reporting($old_error_level);
- return $ret;
- }
-
- /**
- * increments related key from the memcache
- *
- * @access public
- */
- public function increment($key, $offset = 1) {
- $this->logDebugMessage(sprintf("%s key incremented %s times", $key, $offset));
- return $this->memcachedInstance->increment($key, $offset);
- }
-
- /**
- * decrements related key from the memcache
- *
- * @access public
- */
- public function decrement($key, $offset = 1) {
- $this->logDebugMessage(sprintf("%s key decremented %s times", $key, $offset));
- return $this->memcachedInstance->decrement($key, $offset);
- }
-
- /**
- * gets running memcached servers.
- *
- * @access public
- * @return array
- */
- public function getRunningServers() {
- return $this->servers;
- }
-
- /**
- * array of server statistics, one entry per server.
- *
- * @access public
- * @return array
- */
- public function getStatistics() {
- return $this->memcachedInstance->getStats();
- }
-
- /**
- * Invalidates all items from the memcache.
- *
- * @access public
- * @return boolean
- */
- public function flush($delay = 0) {
- $this->logDebugMessage(sprintf("memcache flushed! (delay: %s)", $delay));
- return $this->memcachedInstance->flush($delay);
- }
-
- /**
- * logs the memcache actions to the codeigniter's main logging system.
- *
- * @access private
- */
- private function logDebugMessage($message) {
- log_message("debug", $message);
- }
-}
-
-# vim: set noet:
diff --git a/application/models/mfile.php b/application/models/mfile.php
index fabce7b94..f992a0891 100644
--- a/application/models/mfile.php
+++ b/application/models/mfile.php
@@ -338,8 +338,8 @@ class Mfile extends CI_Model {
}
public function get_lexers() {
- $this->load->library("MemcacheLibrary");
- if (! $lexers = $this->memcachelibrary->get('lexers')) {
+ $this->load->driver('cache', array('adapter' => $this->config->item("cache_backend")));
+ if (! $lexers = $this->cache->get('lexers')) {
$lexers = array();
$last_desc = "";
exec("python ".escapeshellarg(FCPATH."scripts/get_lexer_list.py"), $output);
@@ -353,7 +353,7 @@ class Mfile extends CI_Model {
$lexers[$name] = $desc;
}
$lexers["text"] = "Plain text";
- $this->memcachelibrary->set('lexers', $lexers, 1800);
+ $this->cache->save('lexers', $lexers, 1800);
}
return $lexers;
diff --git a/install.php b/install.php
index 6c49658fd..0c4f427c1 100644
--- a/install.php
+++ b/install.php
@@ -44,11 +44,6 @@ foreach ($perldeps as $dep) {
}
}
-// test memcache
-if (!class_exists("Memcache")) {
- $errors .= " - Missing \"Memcache\" php class. Please install your distribution's package of http://pecl.php.net/package/memcache\n";
-}
-
// test pygmentize
ob_start();
passthru("pygmentize -V 2>&1", $buf);