Welcome Guest, Not a member yet? Register   Sign In
fix autoload cache
#1

[eluser]Unknown[/eluser]
codeigniter 2.1.4
application/autoload.php
Code:
$autoload['libraries'] = array('database','cache');


system/libraries/Cache
Cache is cache
system/libraries/cache


system/libraries/Driver.php
48 line, delete ucfirst
Code:
-  $lib_name = ucfirst(strtolower(str_replace('CI_', '', $this->lib_name)));
+ $lib_name = strtolower(str_replace('CI_', '', $this->lib_name) );


application/config/config.php
append code
Code:
$config['autoload_cache'] = array('adapter' => 'memcached');

application/config/memcached.php
Code:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
        
        
$config= array(
    'default' => array(
        'hostname' => '127.0.0.1',
        'port'        => 11211,
        'weight'    => 80
    )
);  
        
/* End of file memcached.php */
/* Location: ./application/config/memcached.php */

system/libraries/cache/cache.php
Code:
if ( ! class_exists('CI_Driver_Library')){
// we aren't instantiating an object here, that'll be done by the Library itself
require BASEPATH.'libraries/Driver.php';
}
class CI_Cache extends CI_Driver_Library {

protected $valid_drivers  = array(
  'cache_apc', 'cache_file', 'cache_memcached', 'cache_dummy'
);

protected $_cache_path  = NULL;  // Path of cache files (if file-based cache)
protected $_adapter   = 'dummy';
protected $_backup_driver;

// ------------------------------------------------------------------------

/**
  * Constructor
  *
  * @param array
  */
public function __construct($config = array())
{
  if (empty($config))
  {
$config = config_item('autoload_cache');
  }
  if ( ! empty($config))
  {
   $this->_initialize($config);
  }
}
#2

[eluser]Unknown[/eluser]
Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 4.3.2 or newer
*
* @package  CodeIgniter
* @author  ExpressionEngine Dev Team
* @copyright Copyright (c) 2006 - 2012 EllisLab, Inc.
* @license  http://codeigniter.com/user_guide/license.html
* @link  http://codeigniter.com
* @since  Version 2.0
* @filesource
*/

// ------------------------------------------------------------------------

/**
* CodeIgniter Caching Class
*
* @package  CodeIgniter
* @subpackage Libraries
* @category Core
* @author  ExpressionEngine Dev Team
* @link  
*/
if ( ! class_exists('CI_Driver_Library')){
// we aren't instantiating an object here, that'll be done by the Library itself
require BASEPATH.'libraries/Driver.php';
}
class CI_Cache extends CI_Driver_Library {

protected $valid_drivers  = array(
  'cache_apc', 'cache_file', 'cache_memcached', 'cache_dummy'
);

protected $_cache_path  = NULL;  // Path of cache files (if file-based cache)
protected $_adapter   = 'dummy';
protected $_backup_driver;

// ------------------------------------------------------------------------

/**
  * Constructor
  *
  * @param array
  */
public function __construct($config = array())
{
  if (empty($config))
  {
   $config = config_item('autoload_cache');
  }
  if ( ! empty($config))
  {
   $this->_initialize($config);
  }
}

// ------------------------------------------------------------------------

/**
  * Get
  *
  * Look for a value in the cache.  If it exists, return the data
  * if not, return FALSE
  *
  * @param  string
  * @return  mixed  value that is stored/FALSE on failure
  */
public function get($id)
{
  return $this->{$this->_adapter}->get($id);
}

// ------------------------------------------------------------------------

/**
  * Cache Save
  *
  * @param  string  Unique Key
  * @param  mixed  Data to store
  * @param  int   Length of time (in seconds) to cache the data
  *
  * @return  boolean  true on success/false on failure
  */
public function save($id, $data, $ttl = 60)
{
  return $this->{$this->_adapter}->save($id, $data, $ttl);
}

// ------------------------------------------------------------------------

/**
  * Delete from Cache
  *
  * @param  mixed  unique identifier of the item in the cache
  * @return  boolean  true on success/false on failure
  */
public function delete($id)
{
  return $this->{$this->_adapter}->delete($id);
}

// ------------------------------------------------------------------------

/**
  * Clean the cache
  *
  * @return  boolean  false on failure/true on success
  */
public function clean()
{
  return $this->{$this->_adapter}->clean();
}

// ------------------------------------------------------------------------

/**
  * Cache Info
  *
  * @param  string  user/filehits
  * @return  mixed  array on success, false on failure
  */
public function cache_info($type = 'user')
{
  return $this->{$this->_adapter}->cache_info($type);
}

// ------------------------------------------------------------------------

/**
  * Get Cache Metadata
  *
  * @param  mixed  key to get cache metadata on
  * @return  mixed  return value from child method
  */
public function get_metadata($id)
{
  return $this->{$this->_adapter}->get_metadata($id);
}

// ------------------------------------------------------------------------

/**
  * Initialize
  *
  * Initialize class properties based on the configuration array.
  *
  * @param array  
  * @return  void
  */
private function _initialize($config)
{        
  $default_config = array(
    'adapter',
    'memcached'
   );

  foreach ($default_config as $key)
  {
   if (isset($config[$key]))
   {
    $param = '_'.$key;

    $this->{$param} = $config[$key];
   }
  }

  if (isset($config['backup']))
  {
   if (in_array('cache_'.$config['backup'], $this->valid_drivers))
   {
    $this->_backup_driver = $config['backup'];
   }
  }
}

// ------------------------------------------------------------------------

/**
  * Is the requested driver supported in this environment?
  *
  * @param  string The driver to test.
  * @return  array
  */
public function is_supported($driver)
{
  static $support = array();

  if ( ! isset($support[$driver]))
  {
   $support[$driver] = $this->{$driver}->is_supported();
  }

  return $support[$driver];
}

// ------------------------------------------------------------------------

/**
  * __get()
  *
  * @param  child
  * @return  object
  */
public function __get($child)
{
  $obj = parent::__get($child);

  if ( ! $this->is_supported($child))
  {
   $this->_adapter = $this->_backup_driver;
  }

  return $obj;
}

// ------------------------------------------------------------------------
}
// End Class

/* End of file Cache.php */
/* Location: ./system/libraries/Cache/Cache.php */




Theme © iAndrew 2016 - Forum software by © MyBB