Кэш Symfony восстанавливается при каждой загрузке страницы - PullRequest
0 голосов
/ 31 октября 2019

У меня проблемы с получением кэша Symfony для возврата кэшированных данных. Вместо этого он генерирует новую версию данных при каждой загрузке страницы.

Я сохраняю записи журнала при каждой загрузке страницы, на этапе создания данных и при отображении данных. Это говорит мне, когда контроллер должен использовать кэшированные данные или когда он регенерирует свежие данные.

require 'vendor/autoload.php';

use Symfony\Component\Cache\Adapter\FilesystemAdapter;
$cache = new FilesystemAdapter();


function _cached_announcements() {
        global $cache;
        return $cache->get('announcements', function(Symfony\Contracts\Cache\ItemInterface $item) {
                $data = time().",announcements,GENERATE\n";
                file_put_contents("log_cache", $data, FILE_APPEND);
                $item->expiresAfter(900); // 900 seconds = 15 minutes
                return get_announcements(1); // this function loads the announcements from the database
        });
}


$data = "\n".time().",announcements,PAGELOAD\n";
file_put_contents("log_cache", $data, FILE_APPEND);

$announcements = _cached_announcements();

$data = time().",announcements,DISPLAY\n";
file_put_contents("log_cache", $data, FILE_APPEND);

Я бы ожидал увидеть запись "GENERATE" только один раз в журнале. Вместо этого я получаю это в журнале. Как вы можете видеть, записи находятся на расстоянии нескольких секунд, хотя я сказал контроллеру, чтобы он держал кэшированные данные в течение 900 секунд.

1572537363,announcements,PAGELOAD
1572537363,announcements,GENERATE
1572537363,announcements,DISPLAY

1572537363,announcements,PAGELOAD
1572537363,announcements,GENERATE
1572537363,announcements,DISPLAY

1572537364,announcements,PAGELOAD
1572537364,announcements,GENERATE
1572537364,announcements,DISPLAY

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...