Sfoglia il codice sorgente

Update FollowerService, add forget method to RelationshipService call to reduce load when mass purging

Daniel Supernault 1 anno fa
parent
commit
347e4f59a3

+ 6 - 2
app/Services/FollowerService.php

@@ -20,10 +20,14 @@ class FollowerService
 	const FOLLOWING_KEY = 'pf:services:follow:following:id:';
 	const FOLLOWING_KEY = 'pf:services:follow:following:id:';
 	const FOLLOWERS_KEY = 'pf:services:follow:followers:id:';
 	const FOLLOWERS_KEY = 'pf:services:follow:followers:id:';
 
 
-	public static function add($actor, $target)
+	public static function add($actor, $target, $refresh = true)
 	{
 	{
 		$ts = (int) microtime(true);
 		$ts = (int) microtime(true);
-		RelationshipService::refresh($actor, $target);
+        if($refresh) {
+          RelationshipService::refresh($actor, $target);
+        } else {
+		  RelationshipService::forget($actor, $target);
+        }
 		Redis::zadd(self::FOLLOWING_KEY . $actor, $ts, $target);
 		Redis::zadd(self::FOLLOWING_KEY . $actor, $ts, $target);
 		Redis::zadd(self::FOLLOWERS_KEY . $target, $ts, $actor);
 		Redis::zadd(self::FOLLOWERS_KEY . $target, $ts, $actor);
 		Cache::forget('profile:following:' . $actor);
 		Cache::forget('profile:following:' . $actor);

+ 8 - 0
app/Services/RelationshipService.php

@@ -66,6 +66,14 @@ class RelationshipService
 		return self::get($aid, $tid);
 		return self::get($aid, $tid);
 	}
 	}
 
 
+	public static function forget($aid, $tid)
+	{
+		Cache::forget('pf:services:follower:audience:' . $aid);
+		Cache::forget('pf:services:follower:audience:' . $tid);
+		self::delete($tid, $aid);
+		self::delete($aid, $tid);
+	}
+
 	public static function defaultRelation($tid)
 	public static function defaultRelation($tid)
 	{
 	{
 		return [
 		return [