Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: extract duplicate config loading #4242

Merged
merged 1 commit into from
Aug 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion actions/DisplayAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,9 @@ public function __invoke(Request $request): Response
$this->cache->set($cacheKey, $response, 60 * 15);
}

if (rand(1, 100) === 2) {
// For 1% of requests, prune cache
if (rand(1, 100) === 1) {
// This might be resource intensive!
$this->cache->prune();
}

Expand Down
11 changes: 1 addition & 10 deletions bin/cache-clear
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,7 @@
*/

require __DIR__ . '/../lib/bootstrap.php';

$config = [];
if (file_exists(__DIR__ . '/../config.ini.php')) {
$config = parse_ini_file(__DIR__ . '/../config.ini.php', true, INI_SCANNER_TYPED);
if (!$config) {
http_response_code(500);
exit("Error parsing config.ini.php\n");
}
}
Configuration::loadConfiguration($config, getenv());
require __DIR__ . '/../lib/config.php';

$container = require __DIR__ . '/../lib/dependencies.php';

Expand Down
20 changes: 10 additions & 10 deletions bin/cache-prune
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@
*/

require __DIR__ . '/../lib/bootstrap.php';

$config = [];
if (file_exists(__DIR__ . '/../config.ini.php')) {
$config = parse_ini_file(__DIR__ . '/../config.ini.php', true, INI_SCANNER_TYPED);
if (!$config) {
http_response_code(500);
exit("Error parsing config.ini.php\n");
}
}
Configuration::loadConfiguration($config, getenv());
require __DIR__ . '/../lib/config.php';

$container = require __DIR__ . '/../lib/dependencies.php';

/** @var CacheInterface $cache */
$cache = $container['cache'];

if (
Configuration::getConfig('cache', 'type') === 'file'
&& !Configuration::getConfig('FileCache', 'enable_purge')
) {
// Override enable_purge for this execution
Configuration::setConfig('FileCache', 'enable_purge', true);
}

$cache->prune();
11 changes: 1 addition & 10 deletions bin/test
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,7 @@
*/

require __DIR__ . '/../lib/bootstrap.php';

$config = [];
if (file_exists(__DIR__ . '/../config.ini.php')) {
$config = parse_ini_file(__DIR__ . '/../config.ini.php', true, INI_SCANNER_TYPED);
if (!$config) {
http_response_code(500);
exit("Error parsing config.ini.php\n");
}
}
Configuration::loadConfiguration($config, getenv());
require __DIR__ . '/../lib/config.php';

$container = require __DIR__ . '/../lib/dependencies.php';

Expand Down
2 changes: 2 additions & 0 deletions caches/FileCache.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,10 @@ public function prune(): void
}
$expiration = $item['expiration'] ?? time();
if ($expiration === 0 || $expiration > time()) {
// Cached forever, or not expired yet
continue;
}
// Expired, so delete file
unlink($cacheFile);
}
}
Expand Down
13 changes: 2 additions & 11 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,8 @@
exit("RSS-Bridge requires minimum PHP version 7.4\n");
}

require_once __DIR__ . '/lib/bootstrap.php';

$config = [];
if (file_exists(__DIR__ . '/config.ini.php')) {
$config = parse_ini_file(__DIR__ . '/config.ini.php', true, INI_SCANNER_TYPED);
if (!$config) {
http_response_code(500);
exit("Error parsing config.ini.php\n");
}
}
Configuration::loadConfiguration($config, getenv());
require __DIR__ . '/lib/bootstrap.php';
require __DIR__ . '/lib/config.php';

$container = require __DIR__ . '/lib/dependencies.php';

Expand Down
42 changes: 4 additions & 38 deletions lib/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,43 +15,6 @@ private function __construct()
{
}

public static function checkInstallation(): array
{
$errors = [];

// OpenSSL: https://www.php.net/manual/en/book.openssl.php
if (!extension_loaded('openssl')) {
$errors[] = 'openssl extension not loaded';
}

// libxml: https://www.php.net/manual/en/book.libxml.php
if (!extension_loaded('libxml')) {
$errors[] = 'libxml extension not loaded';
}

// Multibyte String (mbstring): https://www.php.net/manual/en/book.mbstring.php
if (!extension_loaded('mbstring')) {
$errors[] = 'mbstring extension not loaded';
}

// SimpleXML: https://www.php.net/manual/en/book.simplexml.php
if (!extension_loaded('simplexml')) {
$errors[] = 'simplexml extension not loaded';
}

// Client URL Library (curl): https://www.php.net/manual/en/book.curl.php
// Allow RSS-Bridge to run without curl module in CLI mode without root certificates
if (!extension_loaded('curl') && !(php_sapi_name() === 'cli' && empty(ini_get('curl.cainfo')))) {
$errors[] = 'curl extension not loaded';
}

// JavaScript Object Notation (json): https://www.php.net/manual/en/book.json.php
if (!extension_loaded('json')) {
$errors[] = 'json extension not loaded';
}
return $errors;
}

public static function loadConfiguration(array $customConfig = [], array $env = [])
{
if (!file_exists(__DIR__ . '/../config.default.ini.php')) {
Expand Down Expand Up @@ -204,7 +167,10 @@ public static function getConfig(string $section, string $key, $default = null)
return self::$config[strtolower($section)][strtolower($key)] ?? $default;
}

private static function setConfig(string $section, string $key, $value): void
/**
* @internal Please avoid usage
*/
public static function setConfig(string $section, string $key, $value): void
{
self::$config[strtolower($section)][strtolower($key)] = $value;
}
Expand Down
13 changes: 13 additions & 0 deletions lib/config.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

declare(strict_types=1);

$config = [];
if (file_exists(__DIR__ . '/../config.ini.php')) {
$config = parse_ini_file(__DIR__ . '/../config.ini.php', true, INI_SCANNER_TYPED);
if (!$config) {
http_response_code(500);
exit("Error parsing config.ini.php\n");
}
}
Configuration::loadConfiguration($config, getenv());
Loading