Cache Class for PHP
Just another php cache class that you can find in Internet..
The difference? super easy to use ;)
Usage:
Initialize:
$cache = new Cache();
Set expire time (by default 3600 seconds)
$cache = new Cache(15);
Set the path (by default “cache/”)
$cache = new Cache(120,"/any_other_path/");
Read a “Key”:
$value = $cache->get("some_data");
Write a “Key”:
$cache->put("some_data", "some_value");
Full example to cache a query:
$cache = new Cache(); $values = $cache->get($query);//setting values from cache if ($values==false) { //not value from cache found $result=mysql_query($query); if (mysql_num_rows($result)>0){//checking if there's more than one result while($row = mysql_fetch_assoc($result)) array_push($values, $row); //feed array $cache->put($query, $values); //save cache } } print_r($values);
The Class:
class Cache { private $cache_path;//path for the cache private $cache_expire;//seconds that the cache expires //cache constructor, optional expiring time and cache path public function Cache($exp_time=3600,$path="cache/"){ $this->cache_expire=$exp_time; $this->cache_path=$path; } //returns the filename for the cache private function fileName($key){ return $this->cache_path.md5($key); } //creates new cache files with the given data, $key== name of the cache, data the info/values to store public function put($key, $data){ $values = serialize($data); $filename = $this->fileName($key); $file = fopen($filename, 'w'); if ($file){//able to create the file fwrite($file, $values); fclose($file); } else return false; } //returns cache for the given key public function get($key){ $filename = $this->fileName($key); if (!file_exists($filename) || !is_readable($filename)){//can't read the cache return false; } if ( time() < (filemtime($filename) + $this->cache_expire) ) {//cache for the key not expired $file = fopen($filename, "r");// read data file if ($file){//able to open the file $data = fread($file, filesize($filename)); fclose($file); return unserialize($data);//return the values } else return false; } else return false;//was expired you need to create new } }
Related posts:

The class is good, but this concept has a problem, on a big site with a really big number of keys you will be overloading the file system. Also some keys may be used three or four times and rest on the directory forever.
The second part is easy to manage, you can set a cron script to delete keys longer than X time.
About big list of files, you may want to see some memory cache systems like PHP APC.
Anyway, for little-medium sites the class fits perfectly!
You are plumb right ;)
You need to be really careful with performance, deleting old caches it’s a must do.
About APC, works great, I’m actually using it, since is the best way I’ve found.
This class I wrote it thinking more to cache some queries as in the example, I will release the db class that I’m currently developing for OC, that db class uses this class to cache heavy queries ;), that’s the idea of the script actually.
Happy you like it, I’m sure you saw things like this every where…I actually based it on this functions I had before: http://neo22s.com/simple-cache-for-php/
[...] Continue reading here: Cache Class for PHP | Neo22s [...]
[...] days a go I wrote about a cache class and longer a go about application variables for php. This is a mix of both in just one powerful [...]