程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 簡單的PHP偽緩存並定時抓取某頁面內容

簡單的PHP偽緩存並定時抓取某頁面內容

編輯:關於PHP編程

需求:要抓取某個頁面的一部分內容,然後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(); 就讀取頁面內容並重新生成暫時文件。

就這麼簡單。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved