caching layer for DB/DataObject

I added a new class, Memcached_DataObject, that will (optionally)
fetch data out of a memcached server if it's available. This only
works on 'staticGet'.

Methods that write to the database (insert, update, delete) will clear
and set the cache correctly, too.

darcs-hash:20080926160941-5ed1f-922de078b4c1941853ad014edf9a17fae486f8cf.gz
This commit is contained in:
Evan Prodromou
2008-09-26 12:09:41 -04:00
parent 7ff02bb7d4
commit e2e6bbb298
25 changed files with 222 additions and 73 deletions

View File

@@ -27,11 +27,11 @@ define('WITHFRIENDS_CACHE_WINDOW', 61);
/**
* Table Definition for user
*/
require_once 'DB/DataObject.php';
require_once 'classes/Memcached_DataObject.php';
require_once 'Validate.php';
require_once(INSTALLDIR.'/lib/noticewrapper.php');
class User extends DB_DataObject
class User extends Memcached_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
@@ -65,7 +65,7 @@ class User extends DB_DataObject
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
/* Static get */
function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('User',$k,$v); }
function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); }
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
@@ -109,7 +109,12 @@ class User extends DB_DataObject
}
$qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
' WHERE id = ' . $this->id;
return $this->query($qry);
$orig->decache();
$result = $this->query($qry);
if ($result) {
$this->encache();
}
return $result;
}
function allowed_nickname($nickname) {