Reduce config->set() load for worker executions

This commit is contained in:
Philipp 2023-01-03 23:55:51 +01:00
parent 0ab5fed64c
commit 4c2fc3ea38
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
2 changed files with 39 additions and 17 deletions

View file

@ -175,6 +175,7 @@ class BaseURL
$currHostname = $this->hostname;
$currSSLPolicy = $this->sslPolicy;
$currURLPath = $this->urlPath;
$currUrl = $this->url;
if (!empty($hostname) && $hostname !== $this->hostname) {
if ($this->config->set('config', 'hostname', $hostname)) {
@ -207,16 +208,18 @@ class BaseURL
}
$this->determineBaseUrl();
if (!$this->config->set('system', 'url', $this->url)) {
$this->hostname = $currHostname;
$this->sslPolicy = $currSSLPolicy;
$this->urlPath = $currURLPath;
$this->determineBaseUrl();
if ($this->url !== $currUrl) {
if (!$this->config->set('system', 'url', $this->url)) {
$this->hostname = $currHostname;
$this->sslPolicy = $currSSLPolicy;
$this->urlPath = $currURLPath;
$this->determineBaseUrl();
$this->config->set('config', 'hostname', $this->hostname);
$this->config->set('system', 'ssl_policy', $this->sslPolicy);
$this->config->set('system', 'urlpath', $this->urlPath);
return false;
$this->config->set('config', 'hostname', $this->hostname);
$this->config->set('system', 'ssl_policy', $this->sslPolicy);
$this->config->set('system', 'urlpath', $this->urlPath);
return false;
}
}
return true;

View file

@ -231,6 +231,21 @@ class BaseURLTest extends MockedTest
public function dataSave()
{
return [
'no_change' => [
'input' => [
'hostname' => 'friendica.local',
'urlPath' => 'path',
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
'url' => 'https://friendica.local/path',
'force_ssl' => true,
],
'save' => [
'hostname' => 'friendica.local',
'urlPath' => 'path',
'sslPolicy' => BaseURL::SSL_POLICY_FULL,
],
'url' => 'https://friendica.local/path',
],
'default' => [
'input' => [
'hostname' => 'friendica.old',
@ -324,19 +339,21 @@ class BaseURLTest extends MockedTest
$baseUrl = new BaseURL($configMock, []);
if (isset($save['hostname'])) {
if (isset($save['hostname']) && ($save['hostname'] !== $input['hostname'])) {
$configMock->shouldReceive('set')->with('config', 'hostname', $save['hostname'])->andReturn(true)->once();
}
if (isset($save['urlPath'])) {
if (isset($save['urlPath']) && ($save['urlPath'] !== $input['urlPath'])) {
$configMock->shouldReceive('set')->with('system', 'urlpath', $save['urlPath'])->andReturn(true)->once();
}
if (isset($save['sslPolicy'])) {
if (isset($save['sslPolicy']) && ($save['sslPolicy'] !== $input['sslPolicy'])) {
$configMock->shouldReceive('set')->with('system', 'ssl_policy', $save['sslPolicy'])->andReturn(true)->once();
}
$configMock->shouldReceive('set')->with('system', 'url', $url)->andReturn(true)->once();
if ($input['url'] !== $url) {
$configMock->shouldReceive('set')->with('system', 'url', $url)->andReturn(true)->once();
}
$baseUrl->save($save['hostname'], $save['sslPolicy'], $save['urlPath']);
@ -362,19 +379,21 @@ class BaseURLTest extends MockedTest
$baseUrl = new BaseURL($configMock, []);
if (isset($save['hostname'])) {
if (isset($save['hostname']) && ($save['hostname'] !== $input['hostname'])) {
$configMock->shouldReceive('set')->with('config', 'hostname', $save['hostname'])->andReturn(true)->once();
}
if (isset($save['urlPath'])) {
if (isset($save['urlPath']) && ($save['urlPath'] !== $input['urlPath'])) {
$configMock->shouldReceive('set')->with('system', 'urlpath', $save['urlPath'])->andReturn(true)->once();
}
if (isset($save['sslPolicy'])) {
if (isset($save['sslPolicy']) && ($save['sslPolicy'] !== $input['sslPolicy'])) {
$configMock->shouldReceive('set')->with('system', 'ssl_policy', $save['sslPolicy'])->andReturn(true)->once();
}
$configMock->shouldReceive('set')->with('system', 'url', $url)->andReturn(true)->once();
if ($input['url'] !== $url) {
$configMock->shouldReceive('set')->with('system', 'url', $url)->andReturn(true)->once();
}
$baseUrl->saveByURL($url);