Improved performance on relation discovery

This commit is contained in:
Michael 2025-01-12 19:43:34 +00:00
parent df85a9a63a
commit d45cd93278

View file

@ -10,6 +10,7 @@ namespace Friendica\Model\Contact;
use Exception; use Exception;
use Friendica\Content\Widget; use Friendica\Content\Widget;
use Friendica\Core\Protocol; use Friendica\Core\Protocol;
use Friendica\Core\Worker;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
@ -21,6 +22,7 @@ use Friendica\Model\Verb;
use Friendica\Protocol\Activity; use Friendica\Protocol\Activity;
use Friendica\Protocol\ActivityPub; use Friendica\Protocol\ActivityPub;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
use Friendica\Util\Strings; use Friendica\Util\Strings;
/** /**
@ -162,20 +164,22 @@ class Relation
$following_counter = 0; $following_counter = 0;
DI::logger()->info('Discover contacts', ['id' => $target, 'url' => $url, 'contacts' => count($contacts)]); DI::logger()->info('Discover contacts', ['id' => $target, 'url' => $url, 'contacts' => count($contacts)]);
foreach ($contacts as $contact) { foreach ($contacts as $contact_url) {
$actor = Contact::getIdForURL($contact); $contact = Contact::getByURL($contact_url, false, ['id']);
if (!empty($actor)) { if (!empty($contact['id'])) {
if (in_array($contact, $followers)) { if (in_array($contact_url, $followers)) {
$fields = ['cid' => $target, 'relation-cid' => $actor, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()]; $fields = ['cid' => $target, 'relation-cid' => $contact['id'], 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()];
DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE); DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE);
$follower_counter++; $follower_counter++;
} }
if (in_array($contact, $followings)) { if (in_array($contact_url, $followings)) {
$fields = ['cid' => $actor, 'relation-cid' => $target, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()]; $fields = ['cid' => $contact['id'], 'relation-cid' => $target, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()];
DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE); DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE);
$following_counter++; $following_counter++;
} }
} elseif (!Network::isUrlBlocked($contact_url)) {
Worker::add(Worker::PRIORITY_LOW, 'AddContact', 0, $contact_url);
} }
} }