use cached fave stream to save DB hits for faves
darcs-hash:20081122163347-84dde-abb0dfc800f65f50951c5517af3bfda48013c6ed.gz
This commit is contained in:
parent
64101cc579
commit
5632b2e6d5
@ -273,6 +273,28 @@ class User extends Memcached_DataObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
function hasFave($notice) {
|
function hasFave($notice) {
|
||||||
|
$cache = common_memcache();
|
||||||
|
|
||||||
|
# XXX: Kind of a hack.
|
||||||
|
|
||||||
|
if ($cache) {
|
||||||
|
# This is the stream of favorite notices, in rev chron
|
||||||
|
# order. This forces it into cache.
|
||||||
|
$faves = $this->favoriteNotices(0, NOTICE_CACHE_WINDOW);
|
||||||
|
|
||||||
|
while ($faves->fetch()) {
|
||||||
|
if ($faves->id > $notice->id) {
|
||||||
|
# If we passed it, it's not a fave
|
||||||
|
return false;
|
||||||
|
} else if ($faves->id == $notice->id) {
|
||||||
|
# If it matches a cached notice, then it's a fave
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# If it's past the end of the cache window,
|
||||||
|
# fall through to the default
|
||||||
|
}
|
||||||
|
|
||||||
$fave = Fave::pkeyGet(array('user_id' => $this->id,
|
$fave = Fave::pkeyGet(array('user_id' => $this->id,
|
||||||
'notice_id' => $notice->id));
|
'notice_id' => $notice->id));
|
||||||
return ((is_null($fave)) ? false : true);
|
return ((is_null($fave)) ? false : true);
|
||||||
|
Loading…
Reference in New Issue
Block a user