ob_get_contents问题 - 返回不可读的东西

时间:2013-04-23 14:59:41

标签: php caching ob-get-contents

我想创建一个缓存。在我的php索引的开头,我使用:

if ($docache) {
    $folder_cache = dirname(__FILE__).'/cache/';
    $seconds_cache = 15*60; // 15 minutes
    $url_cache = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $file_cache = $folder_cache . md5($url_cache) . '.cache';
    $file_cache_existe = ( @file_exists($file_cache) ) ? @filemtime($file_cache) : 0;    
    if ($file_cache_existe > time() - $seconds_cache ) {
        @readfile($file_cache);
        exit();
    }
}
ob_start();

然后,最后:

if ($docache) {
    $folder_cache = dirname(__FILE__).'/cache/';
    $url_cache = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $file_cache = $folder_cache . md5($url_cache) . '.cache';   
    $filehandler = @fopen($file_cache, 'w');    
    @fwrite($filehandler, ob_get_contents());
    @fclose($filehandler);
}

嗯,它有效...当我们第一次看到页面时创建了缓存文件,然后我们返回,它在缓存中显示文件...问题是缓存中的文件只包含一些不可读的字符,如 < r㶒 V 。

似乎是ob_get_contents函数返回的而不是真实显示的内容?我真的不明白为什么!

1 个答案:

答案 0 :(得分:1)

您可以通过删除错误抑制并检查输出是什么来开始。

您可能遇到字符编码问题。