. * */ namespace Friendica\Protocol\ActivityPub; use Friendica\Core\Logger; use Friendica\Database\Database; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Util\DateTimeFormat; /** * This class handles the page cache */ class PageCache { /** * Add content to the page cache * * @param string $page * @param mixed $content * @return void */ public static function add(string $page, $content) { if (!DI::config()->get('system', 'pagecache')) { return; } DBA::delete('pagecache', ["`fetched` < ?", DateTimeFormat::utc('now - 5 minutes')]); DBA::insert('pagecache', ['page' => $page, 'content' => serialize($content), 'fetched' => DateTimeFormat::utcNow()], Database::INSERT_UPDATE); Logger::debug('Page added', ['page' => $page]); } /** * Fetch data from the page cache * * @param string $page * @return mixed */ public static function fetch(string $page) { $pagecache = DBA::selectFirst('pagecache', [], ['page' => $page]); if (empty($pagecache['content'])) { return null; } DBA::update('pagecache', ['fetched' => DateTimeFormat::utcNow()], ['page' => $page]); Logger::debug('Page fetched', ['page' => $page]); return unserialize($pagecache['content']); } }