From d45cd932783d14b7a24bdf2f4753126723ae7906 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 12 Jan 2025 19:43:34 +0000 Subject: [PATCH] Improved performance on relation discovery --- src/Model/Contact/Relation.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Model/Contact/Relation.php b/src/Model/Contact/Relation.php index 5172d87c70..736c4361dd 100644 --- a/src/Model/Contact/Relation.php +++ b/src/Model/Contact/Relation.php @@ -10,6 +10,7 @@ namespace Friendica\Model\Contact; use Exception; use Friendica\Content\Widget; use Friendica\Core\Protocol; +use Friendica\Core\Worker; use Friendica\Database\Database; use Friendica\Database\DBA; use Friendica\DI; @@ -21,6 +22,7 @@ use Friendica\Model\Verb; use Friendica\Protocol\Activity; use Friendica\Protocol\ActivityPub; use Friendica\Util\DateTimeFormat; +use Friendica\Util\Network; use Friendica\Util\Strings; /** @@ -162,20 +164,22 @@ class Relation $following_counter = 0; DI::logger()->info('Discover contacts', ['id' => $target, 'url' => $url, 'contacts' => count($contacts)]); - foreach ($contacts as $contact) { - $actor = Contact::getIdForURL($contact); - if (!empty($actor)) { - if (in_array($contact, $followers)) { - $fields = ['cid' => $target, 'relation-cid' => $actor, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()]; + foreach ($contacts as $contact_url) { + $contact = Contact::getByURL($contact_url, false, ['id']); + if (!empty($contact['id'])) { + if (in_array($contact_url, $followers)) { + $fields = ['cid' => $target, 'relation-cid' => $contact['id'], 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()]; DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE); $follower_counter++; } - if (in_array($contact, $followings)) { - $fields = ['cid' => $actor, 'relation-cid' => $target, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()]; + if (in_array($contact_url, $followings)) { + $fields = ['cid' => $contact['id'], 'relation-cid' => $target, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()]; DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE); $following_counter++; } + } elseif (!Network::isUrlBlocked($contact_url)) { + Worker::add(Worker::PRIORITY_LOW, 'AddContact', 0, $contact_url); } }