Initial commit: RSS feed dashboard aggregating YouTube, Reddit and RT
- PHP 8 + PDO SQLite cache with on-demand TTL refresh and dedup by link hash - laminas-feed + Guzzle for RSS/Atom parsing and HTTP - Bootstrap 5 UI with source and time-range filters, AJAX load-more - User cron-free deployment under Apache/php-fpm; .htaccess hardening
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// SQLite database location (kept outside the web root).
|
||||
'db_path' => dirname(__DIR__) . '/data/feeds.sqlite',
|
||||
|
||||
// Seconds before a feed is considered stale and re-fetched on demand.
|
||||
'cache_ttl' => 1800,
|
||||
|
||||
// Shorter retry interval for feeds whose last fetch failed (e.g. rate limited).
|
||||
'error_retry_ttl' => 120,
|
||||
|
||||
// Minimum milliseconds between requests to the same host.
|
||||
'host_interval_ms' => 1000,
|
||||
|
||||
// Hosts with aggressive rate limits: only fetch this many of their feeds per refresh.
|
||||
'throttled_hosts' => ['www.reddit.com'],
|
||||
'throttled_host_max_per_refresh' => 1,
|
||||
|
||||
// Number of items per page.
|
||||
'page_size' => 20,
|
||||
|
||||
// Time-range filters (key => window length in seconds), shown newest-first.
|
||||
'ranges' => [
|
||||
'1h' => 3600,
|
||||
'2h' => 7200,
|
||||
'6h' => 21600,
|
||||
'24h' => 86400,
|
||||
'7d' => 604800,
|
||||
],
|
||||
|
||||
// HTTP client settings.
|
||||
'request_timeout' => 15,
|
||||
'connect_timeout' => 10,
|
||||
|
||||
// Identify the client to feed providers (important for Reddit).
|
||||
'user_agent' => 'RSSFeed/1.0 (+https://localhost; contact: admin@localhost)',
|
||||
];
|
||||
Reference in New Issue
Block a user