Rev 1372 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
////////////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2006 Phorum Development Team //
// http://www.phorum.org //
// //
// This program is free software. You can redistribute it and/or modify //
// it under the terms of either the current Phorum License (viewable at //
// phorum.org) or the Phorum License that was distributed with this file //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY, without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //
// //
// You should have received a copy of the Phorum License //
// along with this program. //
////////////////////////////////////////////////////////////////////////////////
/*
* Memcached-based caching-layer
* Memcached -> http://www.danga.com/memcached/
* using the pecl-module for accessing memcached
* -> http://pecl.php.net/package/memcache/
*/
if(!defined("PHORUM")) return;
$PHORUM['memcache_obj'] = new Memcache;
$PHORUM['memcache_obj']->connect('127.0.0.1', 11211);
//$PHORUM['memcache_obj'] = memcache_connect('127.0.0.1', 11211);
/*
* This function returns the cached data for the given key
* or NULL if no data is cached for this key
*/
function phorum_cache_get($type,$key) {
if(is_array($key)) {
$getkey=array();
foreach($key as $realkey) {
$getkey[]=$type."_".$realkey;
}
} else {
$getkey=$type."_".$key;
}
$ret=$GLOBALS['PHORUM']['memcache_obj']->get($getkey);
// rewriting them as we need to strip out the type :(
if(is_array($getkey)) {
$typelen=(strlen($type)+1);
foreach($ret as $retkey => $retdata) {
$ret[substr($retkey,$typelen)]=$retdata;
unset($ret[$retkey]);
}
}
if($ret === false || (is_array($ret) && count($ret) == 0))
$ret=NULL;
return $ret;
}
/*
* Puts some data into the cache
* returns number of bytes written (something 'true') or false ...
* depending of the success of the function
*/
function phorum_cache_put($type,$key,$data,$ttl=PHORUM_CACHE_DEFAULT_TTL) {
$ret=$GLOBALS['PHORUM']['memcache_obj']->set($type."_".$key, $data, 0, $ttl);
return $ret;
}
/*
* Removes a key from the cache
*/
function phorum_cache_remove($type,$key) {
$ret=$GLOBALS['PHORUM']['memcache_obj']->delete( $type."_".$key, 0);
return $ret;
}
/*
* Clears all data from the cache
*/
function phorum_cache_clear() {
$ret=$GLOBALS['PHORUM']['memcache_obj']->flush();
return $ret;
}
/*
type can be nearly each value to specify a group of data
used are currently:
'user'
'message'
*/
?>