SoFunction
Updated on 2025-03-10

A very simple PHP cache code

There is a lot of information about the PHP cache class on the Internet, but this class should be one that I have seen to meet the needs of functions but is extremely concise. Without further ado, just look at the code!
Instructions for use:
1. Instantiation
$cache = new Cache();
2. Set cache time and cache directory
$cache = new Cache(60, '/any_other_path/');
The first parameter is the number of cache seconds, and the second parameter is the cache path, configured as needed.
By default, the cache time is 3600 seconds, and the cache directory is cache/
3. Read cache
$value = $cache->get('data_key');
4. Write to cache
$value = $cache->put('data_key', 'data_value');
Complete example:

$cache = new Cache(); 
 
//Read the data of the key value $key from the cache$values = $cache->get($key); 
 
//If there is no cached dataif ($values == false) { 
//insert code here... 
//Write the data of the key value $key$cache->put($key, $values); 
} else { 
//insert code here... 
} 


<?php 
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 
} 
} 
?> 

I believe everyone will like this concise php cache code, and I hope it will be helpful to everyone's learning.