Blame | Last modification | View Log | RSS feed
<?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 Memcached Caching Class** @package CodeIgniter* @subpackage Libraries* @category Core* @author ExpressionEngine Dev Team* @link*/class CI_Cache_file extends CI_Driver {protected $_cache_path;/*** Constructor*/public function __construct(){$CI =& get_instance();$CI->load->helper('file');$path = $CI->config->item('cache_path');$this->_cache_path = ($path == '') ? APPPATH.'cache/' : $path;}// ------------------------------------------------------------------------/*** Fetch from cache** @param mixed unique key id* @return mixed data on success/false on failure*/public function get($id){if ( ! file_exists($this->_cache_path.$id)){return FALSE;}$data = read_file($this->_cache_path.$id);$data = unserialize($data);if (time() > $data['time'] + $data['ttl']){unlink($this->_cache_path.$id);return FALSE;}return $data['data'];}// ------------------------------------------------------------------------/*** Save into cache** @param string unique key* @param mixed data to store* @param int length of time (in seconds) the cache is valid* - Default is 60 seconds* @return boolean true on success/false on failure*/public function save($id, $data, $ttl = 60){$contents = array('time' => time(),'ttl' => $ttl,'data' => $data);if (write_file($this->_cache_path.$id, serialize($contents))){@chmod($this->_cache_path.$id, 0777);return TRUE;}return FALSE;}// ------------------------------------------------------------------------/*** Delete from Cache** @param mixed unique identifier of item in cache* @return boolean true on success/false on failure*/public function delete($id){return unlink($this->_cache_path.$id);}// ------------------------------------------------------------------------/*** Clean the Cache** @return boolean false on failure/true on success*/public function clean(){return delete_files($this->_cache_path);}// ------------------------------------------------------------------------/*** Cache Info** Not supported by file-based caching** @param string user/filehits* @return mixed FALSE*/public function cache_info($type = NULL){return get_dir_file_info($this->_cache_path);}// ------------------------------------------------------------------------/*** Get Cache Metadata** @param mixed key to get cache metadata on* @return mixed FALSE on failure, array on success.*/public function get_metadata($id){if ( ! file_exists($this->_cache_path.$id)){return FALSE;}$data = read_file($this->_cache_path.$id);$data = unserialize($data);if (is_array($data)){$mtime = filemtime($this->_cache_path.$id);if ( ! isset($data['ttl'])){return FALSE;}return array('expire' => $mtime + $data['ttl'],'mtime' => $mtime);}return FALSE;}// ------------------------------------------------------------------------/*** Is supported** In the file driver, check to see that the cache directory is indeed writable** @return boolean*/public function is_supported(){return is_really_writable($this->_cache_path);}// ------------------------------------------------------------------------}// End Class/* End of file Cache_file.php *//* Location: ./system/libraries/Cache/drivers/Cache_file.php */