原文:http://www.nowamagic.net/librarys/veda/detail/904
需求:要抓取某个页面的一部分内容,然后iframe到别的页面去。iframe的时候,不需求每次都访问源页面,而是每天只读取源页面一次,并生成文件,iframe的时候只访问该暂时文件,也就是伪缓存啦。这么做适合访问量不大的页面,降低数据库访问压力。
程序设计如下:
function get_page_content()
{
$url = "http://www.nowamagic.net/";
$contents = file_get_contents($url);
//如果出现中文乱码使用下面代码
//$getcontent = iconv("gb2312″, "utf-8″,$contents);
//echo $contents;
//$pos = strstr($contents, '
//print_r($pos);
$array = explode('
$htmlarray = explode('
$cssarray = explode('
$css_rem_inner = explode('', $cssarray[0]);
$css_min = explode('
$str_css = $css_min[0];
$head = ' ';
$str_1 = '
$str_html = $htmlarray[1];
$content = $str_css.$head.$str_1.$str_html;
return $content;
}
$cache_file = "tmp.html";
$cache_time = 60*60*24;
/**
ob_start();
echo $content;
file_put_contents($cacheFile,ob_get_contents());
ob_end_flush();
**/
echo date("Y-m-d H:i:s", time());
echo '
';
echo date("Y-m-d H:i:s", floor(@filemtime($cache_file)));
if(time() - $cache_time > floor(@filemtime($cache_file)) )
{
$content = get_page_content();
file_put_contents($cacheFile, $content);
header('Location: http://www.nowamagic.net/tmp.html');
}
else
{
header('Location: http://www.nowamagic.net/tmp.html');
}
?>
解释下:
$cache_time = 60*60*24; 缓存时间为一天。
if(time() - $cache_time > floor(@filemtime($cache_file)) ) 如果当前时间减去一天大于暂时文件的修改时间。
$content = get_page_content(); 就读取页面内容并重新生成暂时文件。
就这么简单。