> php教程 > php手册 > 본문

简单的PHP伪缓存并定时抓取某页面内容

WBOY
풀어 주다: 2016-06-13 09:38:21
원래의
982명이 탐색했습니다.

需求:要抓取某个页面的一部分内容,然后iframe到别的页面去。iframe的时候,不需求每次都访问源页面,而是每天只读取源页面一次,并生成文件,iframe的时候只访问该暂时文件,也就是伪缓存啦。这么做适合访问量不大的页面,降低数据库访问压力。

程序设计如下:

<?php
function get_page_content()
{
	$url = "http://www.bkjia.com/";
	$contents = file_get_contents($url);
	//如果出现中文乱码使用下面代码
	//$getcontent = iconv("gb2312″, "utf-8″,$contents);
	//echo $contents;
	//$pos = strstr($contents, '<div class="hot_news">');
	//print_r($pos);
	$array = explode('<div class="hot_news">', $contents);
	$htmlarray = explode('<div class="car_tab border4">', $array[0]); // HTML部分
	$cssarray = explode('<div class="hometop">', $htmlarray[0]);
	$css_rem_inner = explode('<!--[if !IE]>导航<![endif]-->', $cssarray[0]);
	$css_min = explode('<script type="text/javascript" src="http://www.bkjia.com/ad_comm_t.js">', $css_rem_inner[0]);
	$str_css = $css_min[0];
	$head = '<base target="_blank"></base></head> ';
	$str_1 = '<div class="car_tab border4">';
	$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 '<br />';
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.bkjia.com/tmp.html');
}
else
{
	header('Location: http://www.bkjia.com/tmp.html');
}
?>
로그인 후 복사

解释下:

$cache_time = 60*60*24; 缓存时间为一天。

if(time() - $cache_time > floor(@filemtime($cache_file)) ) 如果当前时间减去一天大于暂时文件的修改时间。

$content = get_page_content(); 就读取页面内容并重新生成暂时文件。

就这么简单。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿