Merge pull request #8142 from nupplaphil/task/di_config

CleanUp Config namespace
This commit is contained in:
Hypolite Petovan 2020-01-19 22:22:57 -05:00 committed by GitHub
commit 04d620fc2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
207 changed files with 1276 additions and 1439 deletions

View file

@ -349,7 +349,7 @@ class ACL
$mail_enabled = false;
$pubmail_enabled = false;
if (function_exists('imap_open') && !Config::get('system', 'imap_disabled')) {
if (function_exists('imap_open') && !DI::config()->get('system', 'imap_disabled')) {
$mailacct = DBA::selectFirst('mailacct', ['pubmail'], ['`uid` = ? AND `server` != ""', $user['uid']]);
if (DBA::isResult($mailacct)) {
$mail_enabled = true;

View file

@ -45,7 +45,7 @@ class Addon
list($tmp, $addon) = array_map('trim', explode('/', $file));
$info = self::getInfo($addon);
if (Config::get('system', 'show_unsupported_addons')
if (DI::config()->get('system', 'show_unsupported_addons')
|| strtolower($info['status']) != 'unsupported'
|| self::isEnabled($addon)
) {
@ -103,7 +103,7 @@ class Addon
$installed_addons = DBA::toArray($r);
}
$addons = Config::get('system', 'addon');
$addons = DI::config()->get('system', 'addon');
$addons_arr = [];
if ($addons) {
@ -210,7 +210,7 @@ class Addon
*/
public static function reload()
{
$addons = Config::get('system', 'addon');
$addons = DI::config()->get('system', 'addon');
if (strlen($addons)) {
$r = DBA::select('addon', [], ['installed' => 1]);
if (DBA::isResult($r)) {
@ -348,7 +348,7 @@ class Addon
*/
public static function saveEnabledList()
{
return Config::set('system', 'addon', implode(',', self::$addons));
return DI::config()->set('system', 'addon', implode(',', self::$addons));
}
/**

View file

@ -1,7 +1,9 @@
<?php
namespace Friendica\Core\Config;
namespace Friendica\Core;
use Friendica\Core\Config\Cache;
use Friendica\Core\Config\IConfig;
use Friendica\Model;
/**
@ -10,10 +12,10 @@ use Friendica\Model;
* - The Config-Files (loaded into the FileCache @see Cache\ConfigCache)
* - The Config-DB-Table (per Config-DB-model @see Model\Config\Config)
*/
abstract class Configuration implements IConfiguration
abstract class BaseConfig implements IConfig
{
/**
* @var Cache\ConfigCache
* @var Cache
*/
protected $configCache;
@ -23,10 +25,10 @@ abstract class Configuration implements IConfiguration
protected $configModel;
/**
* @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
* @param Model\Config\Config $configModel The configuration model
* @param Cache $configCache The configuration cache (based on the config-files)
* @param Model\Config\Config $configModel The configuration model
*/
public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
public function __construct(Cache $configCache, Model\Config\Config $configModel)
{
$this->configCache = $configCache;
$this->configModel = $configModel;

View file

@ -1,7 +1,9 @@
<?php
namespace Friendica\Core\Config;
namespace Friendica\Core;
use Friendica\Core\PConfig\Cache;
use Friendica\Core\PConfig\IPConfig;
use Friendica\Model;
/**
@ -11,10 +13,10 @@ use Friendica\Model;
* The configuration cache (@see Cache\PConfigCache) is used for temporary caching of database calls. This will
* increase the performance.
*/
abstract class PConfiguration implements IPConfiguration
abstract class BasePConfig implements IPConfig
{
/**
* @var Cache\PConfigCache
* @var Cache
*/
protected $configCache;
@ -24,10 +26,10 @@ abstract class PConfiguration implements IPConfiguration
protected $configModel;
/**
* @param Cache\PConfigCache $configCache The configuration cache
* @param Model\Config\PConfig $configModel The configuration model
* @param Cache $configCache The configuration cache
* @param Model\Config\PConfig $configModel The configuration model
*/
public function __construct(Cache\PConfigCache $configCache, Model\Config\PConfig $configModel)
public function __construct(Cache $configCache, Model\Config\PConfig $configModel)
{
$this->configCache = $configCache;
$this->configModel = $configModel;
@ -36,7 +38,7 @@ abstract class PConfiguration implements IPConfiguration
/**
* Returns the Config Cache
*
* @return Cache\PConfigCache
* @return Cache
*/
public function getCache()
{

View file

@ -4,7 +4,7 @@ namespace Friendica\Core\Cache;
use Exception;
use Friendica\Core\BaseCache;
use Friendica\Core\Config\IConfiguration;
use Friendica\Core\Config\IConfig;
use Memcache;
/**
@ -26,7 +26,7 @@ class MemcacheCache extends BaseCache implements IMemoryCache
/**
* @throws Exception
*/
public function __construct(string $hostname, IConfiguration $config)
public function __construct(string $hostname, IConfig $config)
{
if (!class_exists('Memcache', false)) {
throw new Exception('Memcache class isn\'t available');

View file

@ -4,7 +4,7 @@ namespace Friendica\Core\Cache;
use Exception;
use Friendica\Core\BaseCache;
use Friendica\Core\Config\IConfiguration;
use Friendica\Core\Config\IConfig;
use Memcached;
use Psr\Log\LoggerInterface;
@ -40,7 +40,7 @@ class MemcachedCache extends BaseCache implements IMemoryCache
*
* @throws \Exception
*/
public function __construct(string $hostname, IConfiguration $config, LoggerInterface $logger)
public function __construct(string $hostname, IConfig $config, LoggerInterface $logger)
{
if (!class_exists('Memcached', false)) {
throw new Exception('Memcached class isn\'t available');

View file

@ -4,7 +4,7 @@ namespace Friendica\Core\Cache;
use Exception;
use Friendica\Core\BaseCache;
use Friendica\Core\Config\IConfiguration;
use Friendica\Core\Config\IConfig;
use Redis;
/**
@ -23,7 +23,7 @@ class RedisCache extends BaseCache implements IMemoryCache
/**
* @throws Exception
*/
public function __construct(string $hostname, IConfiguration $config)
public function __construct(string $hostname, IConfig $config)
{
if (!class_exists('Redis', false)) {
throw new Exception('Redis class isn\'t available');

View file

@ -1,77 +0,0 @@
<?php
/**
* System Configuration Class
*
* @file include/Core/Config.php
*
* Contains the class with methods for system configuration
*/
namespace Friendica\Core;
use Friendica\DI;
/**
* Arbitrary system configuration storage
*
* Note:
* If we ever would decide to return exactly the variable type as entered,
* we will have fun with the additional features. :-)
*/
class Config
{
/**
* Loads all configuration values of family into a cached storage.
*
* @param string $cat The category of the configuration value
*
* @return void
*/
public static function load($cat = "config")
{
DI::config()->load($cat);
}
/**
* Get a particular user's config variable given the category name ($family) and a key.
*
* @param string $cat The category of the configuration value
* @param string $key The configuration key to query
* @param mixed $default_value optional, The value to return if key is not set (default: null)
* @param boolean $refresh optional, If true the config is loaded from the db and not from the cache (default: false)
*
* @return mixed Stored value or null if it does not exist
*/
public static function get($cat, $key, $default_value = null, $refresh = false)
{
return DI::config()->get($cat, $key, $default_value, $refresh);
}
/**
* Stores a config value ($value) in the category ($cat) under the key ($key)
*
* Note: Please do not store booleans - convert to 0/1 integer values!
*
* @param string $cat The category of the configuration value
* @param string $key The configuration key to set
* @param mixed $value The value to store
*
* @return bool Operation success
*/
public static function set($cat, $key, $value)
{
return DI::config()->set($cat, $key, $value);
}
/**
* Deletes the given key from the system configuration.
*
* @param string $cat The category of the configuration value
* @param string $key The configuration key to delete
*
* @return bool
*/
public static function delete($cat, $key)
{
return DI::config()->delete($cat, $key);
}
}

View file

@ -1,6 +1,6 @@
<?php
namespace Friendica\Core\Config\Cache;
namespace Friendica\Core\Config;
use ParagonIE\HiddenString\HiddenString;
@ -9,7 +9,7 @@ use ParagonIE\HiddenString\HiddenString;
* Initial, all *.config.php files are loaded into this cache with the
* ConfigFileLoader ( @see ConfigFileLoader )
*/
class ConfigCache
class Cache
{
/**
* @var array

View file

@ -5,15 +5,13 @@ namespace Friendica\Core\Config;
/**
* Interface for accessing system wide configurations
*/
interface IConfiguration
interface IConfig
{
/**
* Loads all configuration values of family into a cached storage.
*
* All configuration values of the system are stored in the cache ( @see ConfigCache )
*
* @param string $cat The category of the configuration value
* All configuration values of the system are stored in the cache ( @param string $cat The category of the configuration value
*
* @return void
*/
@ -67,7 +65,7 @@ interface IConfiguration
/**
* Returns the Config Cache
*
* @return Cache\ConfigCache
* @return Cache
*/
function getCache();
}

View file

@ -2,6 +2,7 @@
namespace Friendica\Core\Config;
use Friendica\Core\BaseConfig;
use Friendica\Model;
/**
@ -11,7 +12,7 @@ use Friendica\Model;
* Default Configuration type.
* Provides the best performance for pages loading few configuration variables.
*/
class JitConfiguration extends Configuration
class JitConfig extends BaseConfig
{
/**
* @var array Array of already loaded db values (even if there was no value)
@ -19,10 +20,10 @@ class JitConfiguration extends Configuration
private $db_loaded;
/**
* @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
* @param Cache $configCache The configuration cache (based on the config-files)
* @param Model\Config\Config $configModel The configuration model
*/
public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
public function __construct(Cache $configCache, Model\Config\Config $configModel)
{
parent::__construct($configCache, $configModel);
$this->db_loaded = [];

View file

@ -2,6 +2,7 @@
namespace Friendica\Core\Config;
use Friendica\Core\BaseConfig;
use Friendica\Model;
/**
@ -10,16 +11,16 @@ use Friendica\Model;
*
* Minimizes the number of database queries to retrieve configuration values at the cost of memory.
*/
class PreloadConfiguration extends Configuration
class PreloadConfig extends BaseConfig
{
/** @var bool */
private $config_loaded;
/**
* @param Cache\ConfigCache $configCache The configuration cache (based on the config-files)
* @param Cache $configCache The configuration cache (based on the config-files)
* @param Model\Config\Config $configModel The configuration model
*/
public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
public function __construct(Cache $configCache, Model\Config\Config $configModel)
{
parent::__construct($configCache, $configModel);
$this->config_loaded = false;

View file

@ -6,7 +6,7 @@ namespace Friendica\Core;
use DOMDocument;
use Exception;
use Friendica\Core\Config\Cache\ConfigCache;
use Friendica\Core\Config\Cache;
use Friendica\Database\Database;
use Friendica\Database\DBStructure;
use Friendica\DI;
@ -129,12 +129,12 @@ class Installer
* - Creates `config/local.config.php`
* - Installs Database Structure
*
* @param ConfigCache $configCache The config cache with all config relevant information
* @param Cache $configCache The config cache with all config relevant information
*
* @return bool true if the config was created, otherwise false
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public function createConfig(ConfigCache $configCache)
public function createConfig(Cache $configCache)
{
$basepath = $configCache->get('system', 'basepath');
@ -618,12 +618,12 @@ class Installer
/**
* Setup the default cache for a new installation
*
* @param ConfigCache $configCache The configuration cache
* @param string $basePath The determined basepath
* @param Cache $configCache The configuration cache
* @param string $basePath The determined basepath
*
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public function setUpCache(ConfigCache $configCache, $basePath)
public function setUpCache(Cache $configCache, $basePath)
{
$configCache->set('config', 'php_path' , $this->getPHPPath());
$configCache->set('system', 'basepath' , $basePath);

View file

@ -2,7 +2,7 @@
namespace Friendica\Core;
use Friendica\Core\Config\IConfiguration;
use Friendica\Core\Config\IConfig;
use Friendica\Core\Session\ISession;
use Friendica\Database\Database;
use Friendica\Util\Strings;
@ -40,7 +40,7 @@ class L10n
*/
private $logger;
public function __construct(IConfiguration $config, Database $dba, LoggerInterface $logger, ISession $session, array $server, array $get)
public function __construct(IConfig $config, Database $dba, LoggerInterface $logger, ISession $session, array $server, array $get)
{
$this->dba = $dba;
$this->logger = $logger;

View file

@ -1,13 +1,13 @@
<?php
namespace Friendica\Core\Config\Cache;
namespace Friendica\Core\PConfig;
use ParagonIE\HiddenString\HiddenString;
/**
* The Friendica config cache for users
*/
class PConfigCache
class Cache
{
/**
* @var array

View file

@ -1,11 +1,11 @@
<?php
namespace Friendica\Core\Config;
namespace Friendica\Core\PConfig;
/**
* Interface for accessing user specific configurations
*/
interface IPConfiguration
interface IPConfig
{
/**
@ -17,7 +17,7 @@ interface IPConfiguration
* @param string $cat The category of the configuration value
*
* @return void
* @see PConfigCache
* @see Cache
*
*/
function load(int $uid, string $cat = 'config');
@ -76,7 +76,7 @@ interface IPConfiguration
/**
* Returns the Config Cache
*
* @return Cache\PConfigCache
* @return Cache
*/
function getCache();
}

View file

@ -1,7 +1,8 @@
<?php
namespace Friendica\Core\Config;
namespace Friendica\Core\PConfig;
use Friendica\Core\BasePConfig;
use Friendica\Model;
/**
@ -11,7 +12,7 @@ use Friendica\Model;
* Default Configuration type.
* Provides the best performance for pages loading few configuration variables.
*/
class JitPConfiguration extends PConfiguration
class JitPConfig extends BasePConfig
{
/**
* @var array Array of already loaded db values (even if there was no value)
@ -19,10 +20,10 @@ class JitPConfiguration extends PConfiguration
private $db_loaded;
/**
* @param Cache\PConfigCache $configCache The configuration cache
* @param Cache $configCache The configuration cache
* @param Model\Config\PConfig $configModel The configuration model
*/
public function __construct(Cache\PConfigCache $configCache, Model\Config\PConfig $configModel)
public function __construct(Cache $configCache, Model\Config\PConfig $configModel)
{
parent::__construct($configCache, $configModel);
$this->db_loaded = [];

View file

@ -1,7 +1,8 @@
<?php
namespace Friendica\Core\Config;
namespace Friendica\Core\PConfig;
use Friendica\Core\BasePConfig;
use Friendica\Model;
/**
@ -10,16 +11,16 @@ use Friendica\Model;
*
* Minimizes the number of database queries to retrieve configuration values at the cost of memory.
*/
class PreloadPConfiguration extends PConfiguration
class PreloadPConfig extends BasePConfig
{
/** @var array */
private $config_loaded;
/**
* @param Cache\PConfigCache $configCache The configuration cache
* @param Cache $configCache The configuration cache
* @param Model\Config\PConfig $configModel The configuration model
*/
public function __construct(Cache\PConfigCache $configCache, Model\Config\PConfig $configModel)
public function __construct(Cache $configCache, Model\Config\PConfig $configModel)
{
parent::__construct($configCache, $configModel);
$this->config_loaded = [];

View file

@ -3,7 +3,7 @@
namespace Friendica\Core;
use Friendica\App;
use Friendica\Core\Config\IConfiguration;
use Friendica\Core\Config\IConfig;
use Psr\Log\LoggerInterface;
/**
@ -28,7 +28,7 @@ final class Process
private $mode;
/**
* @var IConfiguration
* @var IConfig
*/
private $config;
@ -37,7 +37,7 @@ final class Process
*/
private $basePath;
public function __construct(LoggerInterface $logger, App\Mode $mode, IConfiguration $config, string $basepath)
public function __construct(LoggerInterface $logger, App\Mode $mode, IConfig $config, string $basepath)
{
$this->logger = $logger;
$this->mode = $mode;

View file

@ -253,7 +253,7 @@ class Search
*/
public static function searchGlobalContact($search, $mode, int $page = 1)
{
if (Config::get('system', 'block_public') && !Session::isAuthenticated()) {
if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
return [];
}
@ -267,7 +267,7 @@ class Search
}
// check if searching in the local global contact table is enabled
if (Config::get('system', 'poco_local_search')) {
if (DI::config()->get('system', 'poco_local_search')) {
$return = GContact::searchByName($search, $mode);
} else {
$p = $page > 1 ? 'p=' . $page : '';
@ -290,6 +290,6 @@ class Search
*/
public static function getGlobalDirectory()
{
return Config::get('system', 'directory', self::DEFAULT_DIRECTORY);
return DI::config()->get('system', 'directory', self::DEFAULT_DIRECTORY);
}
}

View file

@ -3,7 +3,7 @@
namespace Friendica\Core;
use Exception;
use Friendica\Core\Config\IConfiguration;
use Friendica\Core\Config\IConfig;
use Friendica\Database\Database;
use Friendica\Model\Storage;
use Psr\Log\LoggerInterface;
@ -35,7 +35,7 @@ class StorageManager
/** @var Database */
private $dba;
/** @var IConfiguration */
/** @var IConfig */
private $config;
/** @var LoggerInterface */
private $logger;
@ -47,11 +47,11 @@ class StorageManager
/**
* @param Database $dba
* @param IConfiguration $config
* @param IConfig $config
* @param LoggerInterface $logger
* @param L10n $l10n
*/
public function __construct(Database $dba, IConfiguration $config, LoggerInterface $logger, L10n $l10n)
public function __construct(Database $dba, IConfig $config, LoggerInterface $logger, L10n $l10n)
{
$this->dba = $dba;
$this->config = $config;

View file

@ -19,7 +19,7 @@ class Theme
{
public static function getAllowedList()
{
$allowed_themes_str = Config::get('system', 'allowed_themes');
$allowed_themes_str = DI::config()->get('system', 'allowed_themes');
$allowed_themes_raw = explode(',', str_replace(' ', '', $allowed_themes_str));
$allowed_themes = [];
if (count($allowed_themes_raw)) {
@ -36,7 +36,7 @@ class Theme
public static function setAllowedList(array $allowed_themes)
{
Config::set('system', 'allowed_themes', implode(',', array_unique($allowed_themes)));
DI::config()->set('system', 'allowed_themes', implode(',', array_unique($allowed_themes)));
}
/**

View file

@ -29,14 +29,14 @@ class Update
}
// Don't check the status if the last update was failed
if (Config::get('system', 'update', Update::SUCCESS, true) == Update::FAILED) {
if (DI::config()->get('system', 'update', Update::SUCCESS, true) == Update::FAILED) {
return;
}
$build = Config::get('system', 'build');
$build = DI::config()->get('system', 'build');
if (empty($build)) {
Config::set('system', 'build', DB_UPDATE_VERSION - 1);
DI::config()->set('system', 'build', DB_UPDATE_VERSION - 1);
$build = DB_UPDATE_VERSION - 1;
}
@ -77,11 +77,11 @@ class Update
DI::lock()->release('dbupdate', true);
}
$build = Config::get('system', 'build', null, true);
$build = DI::config()->get('system', 'build', null, true);
if (empty($build) || ($build > DB_UPDATE_VERSION)) {
$build = DB_UPDATE_VERSION - 1;
Config::set('system', 'build', $build);
DI::config()->set('system', 'build', $build);
}
if ($build != DB_UPDATE_VERSION || $force) {
@ -90,7 +90,7 @@ class Update
$stored = intval($build);
$current = intval(DB_UPDATE_VERSION);
if ($stored < $current || $force) {
Config::load('database');
DI::config()->load('database');
Logger::info('Update starting.', ['from' => $stored, 'to' => $current]);
@ -99,7 +99,7 @@ class Update
if (DI::lock()->acquire('dbupdate', 120, Cache\Duration::INFINITE)) {
// Checks if the build changed during Lock acquiring (so no double update occurs)
$retryBuild = Config::get('system', 'build', null, true);
$retryBuild = DI::config()->get('system', 'build', null, true);
if ($retryBuild !== $build) {
Logger::info('Update already done.', ['from' => $stored, 'to' => $current]);
DI::lock()->release('dbupdate');
@ -110,7 +110,7 @@ class Update
for ($x = $stored + 1; $x <= $current; $x++) {
$r = self::runUpdateFunction($x, 'pre_update');
if (!$r) {
Config::set('system', 'update', Update::FAILED);
DI::config()->set('system', 'update', Update::FAILED);
DI::lock()->release('dbupdate');
return $r;
}
@ -126,12 +126,12 @@ class Update
);
}
Logger::error('Update ERROR.', ['from' => $stored, 'to' => $current, 'retval' => $retval]);
Config::set('system', 'update', Update::FAILED);
DI::config()->set('system', 'update', Update::FAILED);
DI::lock()->release('dbupdate');
return $retval;
} else {
Config::set('database', 'last_successful_update', $current);
Config::set('database', 'last_successful_update_time', time());
DI::config()->set('database', 'last_successful_update', $current);
DI::config()->set('database', 'last_successful_update_time', time());
Logger::info('Update finished.', ['from' => $stored, 'to' => $current]);
}
@ -139,7 +139,7 @@ class Update
for ($x = $stored + 1; $x <= $current; $x++) {
$r = self::runUpdateFunction($x, 'update');
if (!$r) {
Config::set('system', 'update', Update::FAILED);
DI::config()->set('system', 'update', Update::FAILED);
DI::lock()->release('dbupdate');
return $r;
}
@ -150,7 +150,7 @@ class Update
self::updateSuccessfull($stored, $current);
}
Config::set('system', 'update', Update::SUCCESS);
DI::config()->set('system', 'update', Update::SUCCESS);
DI::lock()->release('dbupdate');
}
}
@ -197,11 +197,11 @@ class Update
DI::lock()->release('dbupdate_function');
return false;
} else {
Config::set('database', 'last_successful_update_function', $funcname);
Config::set('database', 'last_successful_update_function_time', time());
DI::config()->set('database', 'last_successful_update_function', $funcname);
DI::config()->set('database', 'last_successful_update_function_time', time());
if ($prefix == 'update') {
Config::set('system', 'build', $x);
DI::config()->set('system', 'build', $x);
}
DI::lock()->release('dbupdate_function');
@ -212,11 +212,11 @@ class Update
} else {
Logger::info('Update function skipped.', ['function' => $funcname]);
Config::set('database', 'last_successful_update_function', $funcname);
Config::set('database', 'last_successful_update_function_time', time());
DI::config()->set('database', 'last_successful_update_function', $funcname);
DI::config()->set('database', 'last_successful_update_function_time', time());
if ($prefix == 'update') {
Config::set('system', 'build', $x);
DI::config()->set('system', 'build', $x);
}
return true;
@ -232,7 +232,7 @@ class Update
*/
private static function updateFailed($update_id, $error_message) {
//send the administrators an e-mail
$condition = ['email' => explode(",", str_replace(" ", "", Config::get('config', 'admin_email'))), 'parent-uid' => 0];
$condition = ['email' => explode(",", str_replace(" ", "", DI::config()->get('config', 'admin_email'))), 'parent-uid' => 0];
$adminlist = DBA::select('user', ['uid', 'language', 'email'], $condition, ['order' => ['uid']]);
// No valid result?
@ -281,7 +281,7 @@ class Update
private static function updateSuccessfull($from_build, $to_build)
{
//send the administrators an e-mail
$condition = ['email' => explode(",", str_replace(" ", "", Config::get('config', 'admin_email'))), 'parent-uid' => 0];
$condition = ['email' => explode(",", str_replace(" ", "", DI::config()->get('config', 'admin_email'))), 'parent-uid' => 0];
$adminlist = DBA::select('user', ['uid', 'language', 'email'], $condition, ['order' => ['uid']]);
if (DBA::isResult($adminlist)) {

View file

@ -63,9 +63,9 @@ class Worker
self::startProcess();
// Kill stale processes every 5 minutes
$last_cleanup = Config::get('system', 'worker_last_cleaned', 0);
$last_cleanup = DI::config()->get('system', 'worker_last_cleaned', 0);
if (time() > ($last_cleanup + 300)) {
Config::set('system', 'worker_last_cleaned', time());
DI::config()->set('system', 'worker_last_cleaned', time());
self::killStaleWorkers();
}
@ -148,7 +148,7 @@ class Worker
}
// Quit the worker once every cron interval
if (time() > ($starttime + (Config::get('system', 'cron_interval') * 60))) {
if (time() > ($starttime + (DI::config()->get('system', 'cron_interval') * 60))) {
Logger::info('Process lifetime reached, respawning.');
self::spawnWorker();
return;
@ -156,7 +156,7 @@ class Worker
}
// Cleaning up. Possibly not needed, but it doesn't harm anything.
if (Config::get('system', 'worker_daemon_mode', false)) {
if (DI::config()->get('system', 'worker_daemon_mode', false)) {
self::IPCSetJobState(false);
}
Logger::log("Couldn't select a workerqueue entry, quitting process " . getmypid() . ".", Logger::DEBUG);
@ -252,7 +252,7 @@ class Worker
$mypid = getmypid();
// Quit when in maintenance
if (Config::get('system', 'maintenance', false, true)) {
if (DI::config()->get('system', 'maintenance', false, true)) {
Logger::log("Maintenance mode - quit process ".$mypid, Logger::DEBUG);
return false;
}
@ -297,7 +297,7 @@ class Worker
$stamp = (float)microtime(true);
$condition = ["`id` = ? AND `next_try` < ?", $queue['id'], DateTimeFormat::utcNow()];
if (DBA::update('workerqueue', ['done' => true], $condition)) {
Config::set('system', 'last_worker_execution', DateTimeFormat::utcNow());
DI::config()->set('system', 'last_worker_execution', DateTimeFormat::utcNow());
}
self::$db_duration = (microtime(true) - $stamp);
self::$db_duration_write += (microtime(true) - $stamp);
@ -343,7 +343,7 @@ class Worker
$stamp = (float)microtime(true);
if (DBA::update('workerqueue', ['done' => true], ['id' => $queue["id"]])) {
Config::set('system', 'last_worker_execution', DateTimeFormat::utcNow());
DI::config()->set('system', 'last_worker_execution', DateTimeFormat::utcNow());
}
self::$db_duration = (microtime(true) - $stamp);
self::$db_duration_write += (microtime(true) - $stamp);
@ -441,7 +441,7 @@ class Worker
DI::profiler()->saveLog(DI::logger(), "ID " . $queue["id"] . ": " . $funcname);
$cooldown = Config::get("system", "worker_cooldown", 0);
$cooldown = DI::config()->get("system", "worker_cooldown", 0);
if ($cooldown > 0) {
Logger::info('Cooldown.', ['priority' => $queue["priority"], 'id' => $queue["id"], 'cooldown' => $cooldown]);
@ -458,10 +458,10 @@ class Worker
private static function maxConnectionsReached()
{
// Fetch the max value from the config. This is needed when the system cannot detect the correct value by itself.
$max = Config::get("system", "max_connections");
$max = DI::config()->get("system", "max_connections");
// Fetch the percentage level where the worker will get active
$maxlevel = Config::get("system", "max_connections_level", 75);
$maxlevel = DI::config()->get("system", "max_connections_level", 75);
if ($max == 0) {
// the maximum number of possible user connections can be a system variable
@ -613,7 +613,7 @@ class Worker
*/
private static function tooMuchWorkers()
{
$queues = Config::get("system", "worker_queues", 10);
$queues = DI::config()->get("system", "worker_queues", 10);
$maxqueues = $queues;
@ -622,21 +622,21 @@ class Worker
// Decrease the number of workers at higher load
$load = System::currentLoad();
if ($load) {
$maxsysload = intval(Config::get("system", "maxloadavg", 20));
$maxsysload = intval(DI::config()->get("system", "maxloadavg", 20));
/* Default exponent 3 causes queues to rapidly decrease as load increases.
* If you have 20 max queues at idle, then you get only 5 queues at 37.1% of $maxsysload.
* For some environments, this rapid decrease is not needed.
* With exponent 1, you could have 20 max queues at idle and 13 at 37% of $maxsysload.
*/
$exponent = intval(Config::get('system', 'worker_load_exponent', 3));
$exponent = intval(DI::config()->get('system', 'worker_load_exponent', 3));
$slope = pow(max(0, $maxsysload - $load) / $maxsysload, $exponent);
$queues = intval(ceil($slope * $maxqueues));
$processlist = '';
if (Config::get('system', 'worker_jpm')) {
$intervals = explode(',', Config::get('system', 'worker_jpm_range'));
if (DI::config()->get('system', 'worker_jpm')) {
$intervals = explode(',', DI::config()->get('system', 'worker_jpm_range'));
$jobs_per_minute = [];
foreach ($intervals as $interval) {
if ($interval == 0) {
@ -664,7 +664,7 @@ class Worker
$deferred = self::deferredEntries();
if (Config::get('system', 'worker_debug')) {
if (DI::config()->get('system', 'worker_debug')) {
$waiting_processes = 0;
// Now adding all processes with workerqueue entries
$stamp = (float)microtime(true);
@ -704,7 +704,7 @@ class Worker
$processlist .= ' ('.implode(', ', $listitem).')';
if (Config::get("system", "worker_fastlane", false) && ($queues > 0) && ($active >= $queues) && self::entriesExists()) {
if (DI::config()->get("system", "worker_fastlane", false) && ($queues > 0) && ($active >= $queues) && self::entriesExists()) {
$top_priority = self::highestPriority();
$high_running = self::processWithPriorityActive($top_priority);
@ -717,9 +717,9 @@ class Worker
Logger::log("Load: " . $load ."/" . $maxsysload . " - processes: " . $deferred . "/" . $active . "/" . $waiting_processes . $processlist . " - maximum: " . $queues . "/" . $maxqueues, Logger::DEBUG);
// Are there fewer workers running as possible? Then fork a new one.
if (!Config::get("system", "worker_dont_fork", false) && ($queues > ($active + 1)) && self::entriesExists()) {
if (!DI::config()->get("system", "worker_dont_fork", false) && ($queues > ($active + 1)) && self::entriesExists()) {
Logger::log("Active workers: ".$active."/".$queues." Fork a new worker.", Logger::DEBUG);
if (Config::get('system', 'worker_daemon_mode', false)) {
if (DI::config()->get('system', 'worker_daemon_mode', false)) {
self::IPCSetJobState(true);
} else {
self::spawnWorker();
@ -728,7 +728,7 @@ class Worker
}
// if there are too much worker, we don't spawn a new one.
if (Config::get('system', 'worker_daemon_mode', false) && ($active > $queues)) {
if (DI::config()->get('system', 'worker_daemon_mode', false) && ($active > $queues)) {
self::IPCSetJobState(false);
}
@ -782,7 +782,7 @@ class Worker
return [];
}
$limit = Config::get('system', 'worker_fetch_limit', 1);
$limit = DI::config()->get('system', 'worker_fetch_limit', 1);
$ids = [];
$stamp = (float)microtime(true);
@ -890,7 +890,7 @@ class Worker
// If there is no result we check without priority limit
if (empty($ids)) {
$limit = Config::get('system', 'worker_fetch_limit', 1);
$limit = DI::config()->get('system', 'worker_fetch_limit', 1);
$stamp = (float)microtime(true);
$condition = ["`pid` = 0 AND NOT `done` AND `next_try` < ?", DateTimeFormat::utcNow()];
@ -976,7 +976,7 @@ class Worker
*/
public static function callWorker()
{
if (!Config::get("system", "frontend_worker")) {
if (!DI::config()->get("system", "frontend_worker")) {
return;
}
@ -992,7 +992,7 @@ class Worker
*/
public static function executeIfIdle()
{
if (!Config::get("system", "frontend_worker")) {
if (!DI::config()->get("system", "frontend_worker")) {
return;
}
@ -1000,11 +1000,11 @@ class Worker
if (function_exists("proc_open")) {
// When was the last time that we called the worker?
// Less than one minute? Then we quit
if ((time() - Config::get("system", "worker_started")) < 60) {
if ((time() - DI::config()->get("system", "worker_started")) < 60) {
return;
}
Config::set("system", "worker_started", time());
DI::config()->set("system", "worker_started", time());
// Do we have enough running workers? Then we quit here.
if (self::tooMuchWorkers()) {
@ -1044,7 +1044,7 @@ class Worker
*/
public static function clearProcesses()
{
$timeout = Config::get("system", "frontend_worker_timeout", 10);
$timeout = DI::config()->get("system", "frontend_worker_timeout", 10);
/// @todo We should clean up the corresponding workerqueue entries as well
$stamp = (float)microtime(true);
@ -1093,7 +1093,7 @@ class Worker
$process->run($command, $args);
// after spawning we have to remove the flag.
if (Config::get('system', 'worker_daemon_mode', false)) {
if (DI::config()->get('system', 'worker_daemon_mode', false)) {
self::IPCSetJobState(false);
}
}
@ -1132,7 +1132,7 @@ class Worker
$priority = PRIORITY_MEDIUM;
// Don't fork from frontend tasks by default
$dont_fork = Config::get("system", "worker_dont_fork", false) || !DI::mode()->isBackend();
$dont_fork = DI::config()->get("system", "worker_dont_fork", false) || !DI::mode()->isBackend();
$created = DateTimeFormat::utcNow();
$force_priority = false;
@ -1192,7 +1192,7 @@ class Worker
}
// We tell the daemon that a new job entry exists
if (Config::get('system', 'worker_daemon_mode', false)) {
if (DI::config()->get('system', 'worker_daemon_mode', false)) {
// We don't have to set the IPC flag - this is done in "tooMuchWorkers"
return $added;
}
@ -1246,7 +1246,7 @@ class Worker
$id = $queue['id'];
$priority = $queue['priority'];
$max_level = Config::get('system', 'worker_defer_limit');
$max_level = DI::config()->get('system', 'worker_defer_limit');
$new_retrial = self::getNextRetrial($queue, $max_level);