Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 0.5.6

Request #9715 Add Memcache container
Submitted: 2006-12-31 05:58 UTC
From: chad dot wagner at gmail dot com Assigned: troehr
Status: Closed Package: HTTP_Session (version 0.5.5)
PHP Version: 4.3.11 OS: Linux
Roadmaps: (Not assigned)    
Subscription  


 [2006-12-31 05:58 UTC] chad dot wagner at gmail dot com (Chad Wagner)
Description: ------------ <?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * Database container for session data * * Memcache database container * * PHP version 4 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category HTTP * @package HTTP_Session * @author Alexander Radivanovich <info@wwwlab.net> * @author David Costa <gurugeek@php.net> * @author Michael Metz <pear.metz@speedpartner.de> * @author Stefan Neufeind <pear.neufeind@speedpartner.de> * @author Torsten Roehr <torsten.roehr@gmx.de> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id: Memcache.php,v 1.3 2005/09/03 14:42:09 troehr Exp $ * @link http://pear.php.net/package/HTTP_Session * @since File available since Release 0.5.0 */ require_once 'HTTP/Session/Container.php'; /** * Database container for session data * * @category HTTP * @package HTTP_Session * @author David Costa <gurugeek@php.net> * @author Michael Metz <pear.metz@speedpartner.de> * @author Stefan Neufeind <pear.neufeind@speedpartner.de> * @author Torsten Roehr <torsten.roehr@gmx.de> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ * @link http://pear.php.net/package/HTTP_Session * @since Class available since Release 0.5.0 */ class HTTP_Session_Container_Memcache extends HTTP_Session_Container { /** * Memcache connection object * * @var object Memcache * @access private */ var $mc = null; /** * Session data cache id * * @var mixed * @access private */ var $crc = false; /** * Constructor method * * $options is an array with the options.<br> * The options are: * <ul> * <li>'memcache' - Memcache object * <li>'prefix' - Key prefix, default is 'sessiondata:'</li> * </ul> * * @access public * @param array $options The options * @return void */ function HTTP_Session_Container_Memcache($options) { $this->_setDefaults(); if (is_array($options)) { $this->_parseOptions($options); } } /** * Connect to database by using the given DSN string * * @access private * @param string DSN string * @return mixed Object on error, otherwise bool */ function _connect($mc) { if (is_object($mc) && is_a($mc, 'Memcache')) { $this->mc = $mc; } else { return new PEAR_Error("The given memcache object was not valid in file " . __FILE__ . " at line " . __LINE__, 41, PEAR_ERROR_RETURN, null, null ); } return true; } /** * Set some default options * * @access private */ function _setDefaults() { $this->options['prefix'] = 'sessiondata:'; $this->options['memcache'] = null; } /** * Establish connection to a database * */ function open($save_path, $session_name) { return $this->_connect($this->options['memcache']); } /** * Free resources * */ function close() { return true; } /** * Read session data * */ function read($id) { $result = $this->mc->get($this->options['prefix'] . $id); $this->crc = strlen($result) . crc32($result); return $result; } /** * Write session data * */ function write($id, $data) { if ($this->crc !== strlen($data) . crc32($data)) { $this->mc->set($this->options['prefix'] . $id ,$data ,MEMCACHE_COMPRESSED ,time() + ini_get('session.gc_maxlifetime') ); } return true; } /** * Destroy session data * */ function destroy($id) { $this->mc->delete($this->options['prefix'] . $id); return true; } /** * Garbage collection * */ function gc($maxlifetime) { return true; } } ?> Test script: --------------- n/a Expected result: ---------------- n/a Actual result: -------------- n/a

Comments

 [2006-12-31 06:00 UTC] chad dot wagner at gmail dot com
Not sure who is actively working on this package, but if you drop me a note I can attach the code. It appears to work fine.
 [2007-01-01 16:27 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!