aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/DisplayAction.php4
-rwxr-xr-xbin/cache-clear11
-rwxr-xr-xbin/cache-prune20
-rwxr-xr-xbin/test11
-rw-r--r--caches/FileCache.php2
-rw-r--r--index.php13
-rw-r--r--lib/Configuration.php42
-rw-r--r--lib/config.php13
8 files changed, 36 insertions, 80 deletions
diff --git a/actions/DisplayAction.php b/actions/DisplayAction.php
index 9749004f..bda45558 100644
--- a/actions/DisplayAction.php
+++ b/actions/DisplayAction.php
@@ -89,7 +89,9 @@ class DisplayAction implements ActionInterface
$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();
}
diff --git a/bin/cache-clear b/bin/cache-clear
index 71466360..c8f53122 100755
--- a/bin/cache-clear
+++ b/bin/cache-clear
@@ -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';
diff --git a/bin/cache-prune b/bin/cache-prune
index 37696e14..755ed8d5 100755
--- a/bin/cache-prune
+++ b/bin/cache-prune
@@ -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();
diff --git a/bin/test b/bin/test
index f3556fc1..74692410 100755
--- a/bin/test
+++ b/bin/test
@@ -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';
diff --git a/caches/FileCache.php b/caches/FileCache.php
index 7a0eb81d..dfd295e8 100644
--- a/caches/FileCache.php
+++ b/caches/FileCache.php
@@ -97,8 +97,10 @@ class FileCache implements CacheInterface
}
$expiration = $item['expiration'] ?? time();
if ($expiration === 0 || $expiration > time()) {
+ // Cached forever, or not expired yet
continue;
}
+ // Expired, so delete file
unlink($cacheFile);
}
}
diff --git a/index.php b/index.php
index 7b441944..e67b0c9f 100644
--- a/index.php
+++ b/index.php
@@ -5,17 +5,8 @@ if (version_compare(\PHP_VERSION, '7.4.0') === -1) {
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';
diff --git a/lib/Configuration.php b/lib/Configuration.php
index b104a251..44fd3612 100644
--- a/lib/Configuration.php
+++ b/lib/Configuration.php
@@ -15,43 +15,6 @@ final class Configuration
{
}
- 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')) {
@@ -204,7 +167,10 @@ final class Configuration
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;
}
diff --git a/lib/config.php b/lib/config.php
new file mode 100644
index 00000000..4ff72565
--- /dev/null
+++ b/lib/config.php
@@ -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());