Symfony缓存在每次页面加载时都会重新注册

时间:2019-10-31 16:00:43

标签: php symfony caching

我无法让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

感谢您的帮助!

0 个答案:

没有答案
相关问题