<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Worker;
-use Friendica\Core\Logger;
use Friendica\Database\DBA;
use Friendica\DI;
-use Friendica\Model\Photo;
-use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Util\DateTimeFormat;
/**
* Clear cache entries
{
public static function execute()
{
- $a = DI::app();
- $last = DI::config()->get('system', 'cache_last_cleared');
-
- if ($last) {
- $next = $last + (3600); // Once per hour
- $clear_cache = ($next <= time());
- } else {
- $clear_cache = true;
- }
-
- if (!$clear_cache) {
- return;
- }
-
// clear old cache
DI::cache()->clear();
- // clear old item cache files
- clear_cache();
-
- // clear cache for photos
- clear_cache($a->getBasePath(), $a->getBasePath() . "/photo");
-
- // clear smarty cache
- clear_cache($a->getBasePath() . "/view/smarty3/compiled", $a->getBasePath() . "/view/smarty3/compiled");
-
- // clear cache for image proxy
- if (!DI::config()->get("system", "proxy_disabled")) {
- clear_cache($a->getBasePath(), $a->getBasePath() . "/proxy");
-
- $cachetime = DI::config()->get('system', 'proxy_cache_time');
-
- if (!$cachetime) {
- $cachetime = ProxyUtils::DEFAULT_TIME;
- }
-
- $condition = ['`uid` = 0 AND `resource-id` LIKE "pic:%" AND `created` < NOW() - INTERVAL ? SECOND', $cachetime];
- Photo::delete($condition);
- }
-
// Delete the cached OEmbed entries that are older than three month
- DBA::delete('oembed', ["`created` < NOW() - INTERVAL 3 MONTH"]);
-
- // Delete the cached "parse_url" entries that are older than three month
- DBA::delete('parsed_url', ["`created` < NOW() - INTERVAL 3 MONTH"]);
-
- if (DI::config()->get('system', 'optimize_tables')) {
- Logger::info('Optimize start');
- DBA::e("OPTIMIZE TABLE `auth_codes`");
- DBA::e("OPTIMIZE TABLE `cache`");
- DBA::e("OPTIMIZE TABLE `challenge`");
- DBA::e("OPTIMIZE TABLE `locks`");
- DBA::e("OPTIMIZE TABLE `oembed`");
- DBA::e("OPTIMIZE TABLE `parsed_url`");
- DBA::e("OPTIMIZE TABLE `profile_check`");
- DBA::e("OPTIMIZE TABLE `session`");
- DBA::e("OPTIMIZE TABLE `tokens`");
- DBA::e("OPTIMIZE TABLE `process`");
- Logger::info('Optimize finished');
- }
+ DBA::delete('oembed', ["`created` < ?", DateTimeFormat::utc('now - 3 months')]);
- DI::config()->set('system', 'cache_last_cleared', time());
+ // Delete the cached "parsed_url" entries that are expired
+ DBA::delete('parsed_url', ["`expires` < ?", DateTimeFormat::utcNow()]);
}
}