Alternative PHP Cache
April 4th, 2008
No comments
APC е PECL extension за PHP, който позволява кеширането на данни и по този начин примерно се избягва изпълнението на една MySQL заявка и ако тя връща едни и същи данни сами се сещате, че е излишно да се изпълнява всеки път, разбира се може да се хардкод-не резултата в кода, но по добрия вариант за мен е кеширането. Преди време тествах различните кеширащи системи от тези тестове са ми останали няколко класове, които реших да споделя.
APC Cache Class:
<?php /** * Alternative PHP Cache Class * * @param int $lifetime * @author Venelin Kochev < vkwebdev@gmail.com > * @version 1.0 * @link http://cyberroot.org * @copyright 2008 Venelin Kochev * */ class APCCache{ //Cache life time //@param: integer private $lifetime = 3600; function __construct($lifetime = ''){ if (!extension_loaded('apc')) { die('<b>Fatal Error:</b> Cache::__construct() - The apc extension must be loaded for using Cache !'); } if(isset($lifetime)) $this->lifetime = $lifetime; } /** * Save cache data. * * @param array $data * @param string $id * @return boolean */ public function save($data, $id){ $result = apc_store($id, array($data, time()), $this->lifetime); return $result; } /** * Load cache by Key * * @param string $id * @return array * */ public function load($id){ $tmp = apc_fetch($id); if (is_array($tmp)) { return $tmp[0]; } return false; } /** * Delete cache by Key. * * @param string $id * @return boolean */ public function remove($id){ return apc_delete($id); } } ?>
Използва се по следния начин:
<?php $lifetime = 3500; $cache = new APCCahce($lifetime); if(!$count = $cache->load('count_category')){ $count = GetCount(); // трябва да връща резултата от MySQL query-то. $cache->save($count, 'count_category') } ?>
Така се прави проверка дали кеш-а съществува, ако го няма се създава, при следващото извикване заявката няма да се изпълни и ще бъде зареден кеш-а.
