Save in memcache
// Store memcache data
function setCache($key,$value,$storage=18) {
$memcache_obj = new Memcache;
$memcache_obj = memcache_connect(memcache_host, 11211);
if(is_array($key)) {
$i = 0;
foreach($key as $id => $storeName) {
$memcache_obj->set($storeName, $value[$id], 0, $storage);
}
}else{
$memcache_obj->set($key, $value, 0, $storage);
}
}
Get from memcache
// Get memcache data
function getCache($key) {
$memcache_obj = new Memcache;
$memcache_obj = memcache_connect(memcache_host, 11211);
$res = $memcache_obj->get($key);
if(empty($res)) {
$res = false; // Expired
}
return $res;
}
Get data from memcache (or store in memcache if not present)
// Get data from either memcache or mysql
function _getData($userid,$table,$fields,$server) {
$toSelect = explode(",",$fields);
$toPush = array();
foreach($toSelect AS &$value) {
// Check if data is available from cache
$key = $userid."_".$table."_".$value;
$res[$value] = getCache($key);
if(empty($res[$value])) {
// Not cached, so must be pushed
$toPush[] = $value;
}
}
if($toPush) {
// Some or all data missing from cache, so we fetch and cache it
$fieldsToSelect = implode(",",$toPush);
$q = _query("SELECT ".$fieldsToSelect." FROM ".$table." WHERE id = '".$userid."'",$server);
$row = _rows($q);
$key = array();
$cValue = array();
foreach($toPush AS &$value) {
$key[] = $userid."_".$table."_".$value;
$cValue[] = $row[$value];
$res[$value] = $row[$value];
}
setCache($key,$cValue);
}
return $res;
}