Remove the locking to improve performance
This commit is contained in:
parent
87f054a642
commit
84d8753d5f
1 changed files with 24 additions and 27 deletions
|
@ -609,8 +609,6 @@ class GContact
|
||||||
*/
|
*/
|
||||||
public static function getId($contact)
|
public static function getId($contact)
|
||||||
{
|
{
|
||||||
$gcontact_id = 0;
|
|
||||||
|
|
||||||
if (empty($contact['network'])) {
|
if (empty($contact['network'])) {
|
||||||
Logger::notice('Empty network', ['url' => $contact['url'], 'callstack' => System::callstack()]);
|
Logger::notice('Empty network', ['url' => $contact['url'], 'callstack' => System::callstack()]);
|
||||||
return false;
|
return false;
|
||||||
|
@ -630,33 +628,32 @@ class GContact
|
||||||
$contact['url'] = self::cleanContactUrl($contact['url']);
|
$contact['url'] = self::cleanContactUrl($contact['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
DBA::lock('gcontact');
|
$condition = ['nurl' => Strings::normaliseLink($contact['url'])];
|
||||||
$fields = ['id', 'last_contact', 'last_failure', 'network'];
|
$gcontact = DBA::selectFirst('gcontact', ['id'], $condition, ['order' => ['id']]);
|
||||||
$gcnt = DBA::selectFirst('gcontact', $fields, ['nurl' => Strings::normaliseLink($contact['url'])]);
|
if (DBA::isResult($gcontact)) {
|
||||||
if (DBA::isResult($gcnt)) {
|
return $gcontact['id'];
|
||||||
$gcontact_id = $gcnt['id'];
|
|
||||||
} else {
|
|
||||||
$contact['location'] = $contact['location'] ?? '';
|
|
||||||
$contact['about'] = $contact['about'] ?? '';
|
|
||||||
$contact['generation'] = $contact['generation'] ?? 0;
|
|
||||||
$contact['hide'] = $contact['hide'] ?? true;
|
|
||||||
|
|
||||||
$fields = ['name' => $contact['name'], 'nick' => $contact['nick'] ?? '', 'addr' => $contact['addr'] ?? '', 'network' => $contact['network'],
|
|
||||||
'url' => $contact['url'], 'nurl' => Strings::normaliseLink($contact['url']), 'photo' => $contact['photo'],
|
|
||||||
'created' => DateTimeFormat::utcNow(), 'updated' => DateTimeFormat::utcNow(), 'location' => $contact['location'],
|
|
||||||
'about' => $contact['about'], 'hide' => $contact['hide'], 'generation' => $contact['generation']];
|
|
||||||
|
|
||||||
DBA::insert('gcontact', $fields);
|
|
||||||
|
|
||||||
$condition = ['nurl' => Strings::normaliseLink($contact['url'])];
|
|
||||||
$cnt = DBA::selectFirst('gcontact', ['id', 'network'], $condition, ['order' => ['id']]);
|
|
||||||
if (DBA::isResult($cnt)) {
|
|
||||||
$gcontact_id = $cnt['id'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
DBA::unlock();
|
|
||||||
|
|
||||||
return $gcontact_id;
|
$contact['location'] = $contact['location'] ?? '';
|
||||||
|
$contact['about'] = $contact['about'] ?? '';
|
||||||
|
$contact['generation'] = $contact['generation'] ?? 0;
|
||||||
|
$contact['hide'] = $contact['hide'] ?? true;
|
||||||
|
|
||||||
|
$fields = ['name' => $contact['name'], 'nick' => $contact['nick'] ?? '', 'addr' => $contact['addr'] ?? '', 'network' => $contact['network'],
|
||||||
|
'url' => $contact['url'], 'nurl' => Strings::normaliseLink($contact['url']), 'photo' => $contact['photo'],
|
||||||
|
'created' => DateTimeFormat::utcNow(), 'updated' => DateTimeFormat::utcNow(), 'location' => $contact['location'],
|
||||||
|
'about' => $contact['about'], 'hide' => $contact['hide'], 'generation' => $contact['generation']];
|
||||||
|
|
||||||
|
DBA::insert('gcontact', $fields);
|
||||||
|
|
||||||
|
// We intentionally aren't using lastInsertId here. There is a chance for duplicates.
|
||||||
|
$gcontact = DBA::selectFirst('gcontact', ['id'], $condition, ['order' => ['id']]);
|
||||||
|
if (!DBA::isResult($gcontact)) {
|
||||||
|
Logger::info('GContact creation failed', $fields);
|
||||||
|
// Shouldn't happen
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return $gcontact['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue