Cache simplu bazat pe json

Aici vorbim despre CSS, PHP, C++, MySql, Javascript, Java & jQuery.
Post Reply
User avatar
andrei
Membru
Posts: 5
Joined: 04 Jan 2015, 15:48
Nume Real: Andrei

11 Jan 2015, 08:31

Code: Select all

<?php
/**
 * @Package: Micul-Programator.ro simple cache
 * @Author: Marian
 * @$Date: 06/14/2014
 * @Contact: contact@micul-programator.ro
 * @$Rev: 1 
 */
class mpCache {
    /**
    * Directorul unde vor fi stocate fisierele de cache
    */
	private static $_dir = "cacheFiles/"; 
    /**
    * Scrie un fisier .json in care vor fi stocate datele
    * @param  string $identificator -> identifica in mod unic un fisier de cache
    * @param  array $data -> array-ul cu datele primite de la baza de date
    * @return void
    */
	public static function  writeCache($identificator = null , $data = array()) {
		if ( !$identificator || !count($data) ) { return false; }
		file_put_contents(trim(mpCache::$_dir.$identificator).".json",json_encode($data),LOCK_EX);
	}
	/**
	* Citeste un fisier .json si returneaza continutul acestuia
	* @param string $identificator -> identifica in mod unic un fisier de cache
	* @return array $data -> continutul fisierului de cache este returnat ca array 
	*/
	public static function readCache($identificator = null) {
		if ( $identificator == null ) { return array(); }
		$file = trim(mpCache::$_dir.$identificator).".json";
		
		if (!file_exists($file)) {
			return array();
		}
		$data =  file_get_contents(trim(mpCache::$_dir.$identificator).".json");
		return json_decode($data,true);
	}
    /**
	* Sterge un fisier cache
	* @param string $identificator -> identifica in mod unic un fisier de cache
	* @return boolean 
	*/
	public static function deleteCache($identificator = null) {
		$file = trim(mpCache::$_dir.$identificator).".json";
		
		if (!file_exists($file)) {
			return true;
		} 
		if (unlink($file)) {
			return true;
		}
		return false;
	}
}
?>
Exemplu

Code: Select all

<?php
include_once('cache.php');
$dbData = array(
	'id' => 1234,
	'name' => 'Categorie pentru incepatori',
	'description' => 'Aceasta este o categorie pentru incepatori, dar poate participa oricine',
	'status' => 1,
);
//Citeste un fisier cache
$data = mpCache::readCache('cacheFile-'.$dbData['id']);
if (!count($data)) {
	print 'Se scrie in cache';
	//Scrie un fisier cache
	mpCache::writeCache('cacheFile-'.$dbData['id'],$dbData);
} else {
	print "Se citeste din cache <br />";
	print_r($data);
}
//sterge un fisier cache
//mpCache::deleteCache('cacheFile-'.$dbData['id']);
?>
Sursa: http://micul-programator.ro/index.php?p ... at-pe-json
Post Reply

Return to “CSS, PHP, C++, MySql, Javascript, Java & jQuery”