XCache Session Storage Handler:Bei diesem Joomla Hack handelt es sich um einen Session Handler für das Joomla 1.5 Framework, welcher auf die XCache Erweiterung aufsetzt. Diese Erweiterung speichert kompilierte OPCode Array's in einem Shared Memory Segment und erzielt dadurch einen sehr hohen Performance Gewinn. Auch bietet diese Erweiterung eine kleine Api um benutzerdefinierte Inhalte zu lesen, schreiben und zu löschen. Der XCache Session Storage Hanlder hat Einzug in das offizelle Joomla SVN Repository gefunden. Somit muss man ihn nicht mehr installieren. Bei der offizellen ersten stable Version von 1.5 ist er mit dabei. Hier der Quellcode: <?php /** * @version $Id:apc.php 6961 2007-03-15 16:06:53Z tcp $ * @package Joomla.Framework * @subpackage Session * @copyright Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */
// Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die();
/** * Xcache session storage handler * * @author Axel Sauerhöfer <
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
> * @package Joomla.Framework * @subpackage Cache * @since 1.5 */ class JSessionStorageXcache extends JSessionStorage { /** * Constructor * * @access protected * @param array $options optional parameters */ function __construct( $options = array() ) { if (!$this->test()) { return JError::raiseError(404, "The xcache extension isn't available"); }
parent::__construct($options); }
/** * Open the SessionHandler backend. * * @access public * @param string $save_path The path to the session object. * @param string $session_name The name of the session. * @return boolean True on success, false otherwise. */ function open($save_path, $session_name) { return true; }
/** * Close the SessionHandler backend. * * @access public * @return boolean True on success, false otherwise. */ function close() { return true; }
/** * Read the data for a particular session identifier from the * SessionHandler backend. * * @access public * @param string $id The session identifier. * @return string The session data. */ function read($id) { $sess_id = 'sess_'.$id;
//check if id exists if( !xcache_isset( $sess_id ) ){ return; } return (string)xcache_get($sess_id); }
/** * Write session data to the SessionHandler backend. * * @access public * @param string $id The session identifier. * @param string $session_data The session data. * @return boolean True on success, false otherwise. */ function write($id, $session_data) { $sess_id = 'sess_'.$id; return xcache_set($sess_id, $session_data, ini_get("session.gc_maxlifetime") ); }
/** * Destroy the data for a particular session identifier in the * SessionHandler backend. * * @access public * @param string $id The session identifier. * @return boolean True on success, false otherwise. */ function destroy($id) { $sess_id = 'sess_'.$id; if( !xcache_isset( $sess_id ) ){ return true; } return xcache_unset($sess_id); }
/** * Garbage collect stale sessions from the SessionHandler backend. * * @access public * @param integer $maxlifetime The maximum age of a session. * @return boolean True on success, false otherwise. */ function gc($maxlifetime) { return true; }
/** * Test to see if the SessionHandler is available. * * @static * @access public * @return boolean True on success, false otherwise. */ function test() { return (extension_loaded('xcache') && function_exists('xcache_set')); } }
Download: http://www.willcodejoomlaforfood.de/downloads/xcache_session_storage_handler.tar.gz |
XCache Cache Handler:Bei diesem Joomla Hack handelt es sich um einen Cache Handler für das Joomla 1.5 Framework, welcher auf die XCache Erweiterung aufsetzt. Diese Erweiterung speichert kompilierte OPCode Array's in einem Shared Memory Segment und erzielt dadurch einen sehr hohen Performance Gewinn. Auch bietet diese Erweiterung eine kleine Api um benutzerdefinierte Inhalte zu lesen, schreiben und zu löschen. Der XCache Cache Storage Hanlder hat Einzug in das offizelle Joomla SVN Repository gefunden. Somit muss man ihn nicht mehr installieren. Bei der offizellen ersten stable Version von 1.5 ist er mit dabei. Hier der Quellcode: <?php /** * @version $id:$ * @package Joomla.Framework * @subpackage Cache * @copyright Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die(); /** * Xcache cache storage handler * * @author Axel Sauerhöfer <axel[at]willcodejoomlaforfood[dot]de> > * @package Joomla.Framework * @subpackage Cache * @since 1.5 */ class JCacheStorageXCache extends JCacheStorage { /** * Constructor * * @access protected * @param array $options optional parameters */ function __construct( $options = array() ) { parent::__construct($options); $config =& JFactory::getConfig(); $this->_hash = $config->getValue('config.secret');
} /** * Get cached data from xcache by id and group * * @access public * @param string $id The cache data id * @param string $group The cache data group * @param boolean $checkTime True to verify cache time expiration threshold * @return mixed Boolean false on failure or a cached data string * @since 1.5 */ function get($id, $group, $checkTime) { $cache_id = $this->_getCacheId($id, $group); //check if id exists if( !xcache_isset( $cache_id ) ){ return false; } $this->_setExpire($cache_id); return xcache_get($cache_id); } /** * Store the data to xcache by id and group * * @access public * @param string $id The cache data id * @param string $group The cache data group * @param string $data The data to store in cache * @return boolean True on success, false otherwise * @since 1.5 */ function store($id, $group, $data) { $cache_id = $this->_getCacheId($id, $group); xcache_set($cache_id.'_expire', time() ); return xcache_set($cache_id, $data, $this->_lifetime); } /** * Remove a cached data entry by id and group * * @access public * @param string $id The cache data id * @param string $group The cache data group * @return boolean True on success, false otherwise * @since 1.5 */ function remove($id, $group) { $cache_id = $this->_getCacheId($id, $group); if( !xcache_isset( $cache_id ) ){ return true; } return xcache_unset($cache_id); } /** * Test to see if the cache storage is available. * * @static * @access public * @return boolean True on success, false otherwise. */ function test() { return (extension_loaded('xcache') && function_exists('xcache_set')); } /** * Set expire time on each call since memcache sets it on cache creation. * * @access private * * @param string $key Cache key to expire. * @param integer $lifetime Lifetime of the data in seconds. */ function _setExpire($key) { $lifetime = $this->_lifetime; $expire = xcache_get($key.'_expire'); // set prune period if ($expire + $lifetime < time()) { xcache_unset($key); xcache_unset($key.'_expire'); } else { xcache_set($key.'_expire', time()); } } /** * Get a cache_id string from an id/group pair * * @access private * @param string $id The cache data id * @param string $group The cache data group * @return string The cache_id string * @since 1.5 */ function _getCacheId($id, $group) { $name = md5($this->_application.'-'.$id.'-'.$this->_hash.'-'.$this->_language); return 'cache_'.$group.'-'.$name; } }
Download: http://www.willcodejoomlaforfood.de/downloads/xcache_cache_storage_handler.tar.gz |
|
|